【问题标题】:Activity not receiving Custom Broadcast Intent from Broadcast Receiver活动未从广播接收器接收自定义广播意图
【发布时间】: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

监听自定义广播 Intent

AnalyzeActivity.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


【解决方案1】:

使用它在您的 onResume 中注册广播

IntentFilter filter = new IntentFilter(BackgroundReceiver.REMOVED_INTENT);

mIntentReceiver intentToReceiveFilter = new mIntentReceiver();

registerReceiver(intentToReceiveFilter,filter);

并使用它从包删除广播接收器发送广播

Intent intent = new Intent(BackgroundReceiver.REMOVED_INTENT);
intent.putExtra("Package", pkg);
context.sendBroadcast(intent);

如果它解决了你的问题,请告诉我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多