Tag: broadcastreceiver

获取服务中的上下文

有没有可靠的方法从Service获取Context ? 我想为ACTION_PHONE_STATE_CHANGED注册一个广播接收器,但我不需要我的应用程序总是获取这些信息,所以我不把它放在Manifest 。 但是,当我需要这些信息时,我不能让广播接收机被GC杀死,所以我正在向一个Service注册广播接收机。 因此,我需要一个Context来调用registerReceiver() 。 当我不再需要ACTION_PHONE_STATE_CHANGED我注销它。 任何提示?

用户closures设备时有没有办法接收通知?

我需要知道用户何时closures他/她的电话。 是否有任何广播(或类似的),当用户的手机关机时通知?

来自BroadcastReceiver的startActivity()

我正尝试使用onPause()方法中实现的以下BroadcastReceiver自动启动我的夜钟应用程序充电: BroadcastReceiver test = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { unregisterReceiver(this); Intent i = new Intent(context, NightClock.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }; registerReceiver(test, new IntentFilter(Intent.ACTION_POWER_CONNECTED)); 当USB电缆插入时会触发onReceive()方法,但活动不会启动。 但是日志显示这个: I/ActivityManager( 79): Starting activity: Intent { flg=0x10000000 cmp=com.meins.nightclock/.NightClock } 任何想法为什么日志说活动开始,但没有任何反应?

在另一个应用程序中抑制/阻止BroadcastReceiver

Go SMS最近更新了一个新function“禁用其他消息通知”。 该function导致其他应用程序收听传入的SMS广播不会触发。 例如,我的应用程序Shady SMS会监听传入的SMS广播以发送通知,并实际提取并保存SMS消息。 当启用Go SMS中的这个新function时,Shady不会发送通知,也不会保存最终不响应传入SMS广播的消息。 Go SMS必须以某种方式注销我的应用程序的广播接收器,因为传入的SMS广播不能被中止。 我的意图filter设置为android:priority =“0”。 有什么想法吗?

Android短信接收器不工作

我试图编写一个简单的应用程序,试图接收短信和处理它们。 我遵循了几个教程,但是我无处可去,当我发送短信到模拟器时,Intent似乎从未被解雇。 这是我的意图: package com.neocodenetworks.smsfwd; import android.content.*; import android.os.Bundle; import android.telephony.*; import android.util.Log; public class SmsReciever extends BroadcastReceiver { private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; private static final String TAG = "smsfwd"; @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "Intent recieved: " + intent.getAction()); if (intent.getAction() == SMS_RECEIVED) { Bundle bundle = […]

BOOT_COMPLETED不工作的Android

首先,我知道有几百个这样的问题,但我已经检查了一会儿,但仍然找不到任何解决办法。 我已经看到这个答案说,BOOT_COMPLETED不发送到应用程序,除非用户启动您的应用程序,Android 3.1之后的版本但我仍然看到一些应用程序正在这样做,一定有办法。 我真的需要处理它,否则我也反对做一些没有用户交互的东西。 所以这是我的AndroidManifest: <manifest … > <!– to be activated service on boot is completed –> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!– Keeps the processor from sleeping when a message is received. –> <uses-permission android:name="android.permission.WAKE_LOCK" /> <application … > <!– to receive data when boot completed –> <receiver android:name="myPackage.BootReceiver" android:enabled="true" android:exported="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > <intent-filter> <action […]

Android – 何时注册/取消注册在活动中创build的广播接收器?

我需要在活动的onCreate事件中创build一个自定义广播接收器,显然我需要在活动的onDestroy事件中取消注册广播接收器 为了清楚起见,这是我使用的代码片段 public class AnActivity extends Activity { private ResponseReceiver receiver; public class ResponseReceiver extends BroadcastReceiver { public static final String ACTION_RESP = "mypackagename.intent.action.MESSAGE_PROCESSED"; @Override public void onReceive(Context context, Intent intent) { // TODO Start a dialogue if message indicates successfully posted to server } } /** Called when the activity is first created. */ […]

确定addAction点击Android通知

我正在尝试使用新的通知界面。 我已经在通知中添加了3个button,并且每次单击它们时都想将其保存到数据库中。 通知本身运作良好,被调用时显示,我只是不知道如何捕获三个不同的button点击每一个。 我正在使用BroadcastReceiver来捕捉点击,但我不知道如何分辨哪个button被点击。 这是AddAction的代码(我已经排除了其他的通知,因为它的工作很好) – //Yes intent Intent yesReceive = new Intent(); yesReceive.setAction(CUSTOM_INTENT); Bundle yesBundle = new Bundle(); yesBundle.putInt("userAnswer", 1);//This is the value I want to pass yesReceive.putExtras(yesBundle); PendingIntent pendingIntentYes = PendingIntent.getBroadcast(this, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.addAction(R.drawable.calendar_v, "Yes", pendingIntentYes); //Maybe intent Intent maybeReceive = new Intent(); maybeReceive.setAction(CUSTOM_INTENT); Bundle maybeBundle = new Bundle(); maybeBundle.putInt("userAnswer", 3);//This is […]

Android拨出电话时无法检测到

为了检测何时应答出局呼叫,我尝试创build一个PhoneStateListener ,并从这个问题中侦听TelephonyManager的CALL_STATE_RINGING , CALL_STATE_OFFHOOK和CALL_STATE_IDLE ,但似乎不起作用,如下所述。 首先,我在清单中注册了以下权限: <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 然后,一个名为OutCallLogger的BroadcastReceiver在出现呼叫时捕获NEW_OUTGOING_CALL事件: <receiver android:name=".listener.OutCallLogger"> <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> 接下来,我的OutCallLogger实现。 我设置了一个名为noCallListenerYet的布尔值,以避免在调用onReceive()时将新的PhoneStateListener到TelephonyManager 。 public class OutCallLogger extends BroadcastReceiver { private static boolean noCallListenerYet = true; @Override public void onReceive(final Context context, Intent intent) { number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); if (noCallListenerYet) { final TelephonyManager tm = (TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE); […]

Android – 如何注销清单中创build的接收器?

我知道在Java代码中使用registerReceiver和unregisterReceiver来处理接收者,但是假设我在我的清单中有以下内容: <receiver android:name=".headsetHook"> <intent-filter android:priority="99999999999"> <action android:name="android.intent.action.ACTION_HEADSET_PLUG" /> </intent-filter> </receiver> 有没有办法我可以在Java代码注销这个地方? 我可以给它一个id属性或东西,然后得到它,并取消注册? 我问,因为我希望我的应用程序只在第一次执行此操作时执行某些操作,然后取消注册并稍后以Java重新注册。 希望我明确表示,谢谢你的帮助。