【发布时间】:2014-04-02 03:17:53
【问题描述】:
我有一个广播接收器 (BackgroundReceiver),它侦听包删除,然后将包名称广播到 Activity (AnalyzeActivity)
BackgroundReceiver.java
public static final String REMOVED_INTENT = "com.analyze.project.RemovedReceiver";
public void onReceive(Context context, Intent intent) {
String actionStr = intent.getAction();
if (Intent.ACTION_PACKAGE_REMOVED.equals(actionStr)) {
Uri uri = intent.getData();
String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
Log.i("Logging Service", "Package Removed: " + pkg);
//Toast.makeText(context, "Package Removed:" + pkg, Toast.LENGTH_SHORT).show();
Intent c = new Intent();
c.setAction(REMOVED_INTENT);
c.putExtra("Package", pkg);
context.sendBroadcast(c);
}
}
我在 AnalyzeActivity 中动态注册接收器,并从 BackgroundReceiver
监听自定义广播 IntentAnalyzeActivity.java
@Override
protected void onResume() {
super.onResume();
// Register Sync Recievers
IntentFilter intentToReceiveFilter = new IntentFilter();
intentToReceiveFilter.addAction(BackgroundReceiver.REMOVED_INTENT);
this.registerReceiver(mIntentReceiver, intentToReceiveFilter, null, mHandler);
mReceiversRegistered = true;
}
final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String Package = intent.getStringExtra("Package");
if (intent.getAction().equals(BackgroundReceiver.REMOVED_INTENT)) {
Toast.makeText(context, "(A) Package Removed: " + Package, Toast.LENGTH_SHORT).show();
Log.i("Package Removed", "(A) Package Removed: " + Package);
}
}
};
但我的 Activity 似乎根本无法接收广播意图。
【问题讨论】:
-
第一个 BR 工作了吗? (后台接收器)
-
我刚刚在虚拟项目中尝试了你的代码(我从 onOptionsItemSelected() 方法提出了广播),它工作正常。您是否能够从系统中接收到用于删除包的广播...
-
当您收到自定义广播时,您的活动(注册广播的位置)是否可见?
标签: android android-intent broadcastreceiver