删除或更新包时不会调用BroadcastReceiver

时间:2015-04-10 19:25:17

标签: java android broadcastreceiver

我静态注册一个BroadcastReceiver并让它识别添加,删除或替换包的时间,但onReceive不会被触发。这是我的清单,我注册了它:

<receiver android:name="com.generic.package.UpdateReceiver" >
      <intent-filter>
          <action android:name="android.intent.action.PACKAGE_ADDED" />
          <action android:name="android.intent.action.PACKAGE_REPLACED" />
          <action android:name="android.intent.action.PACKAGE_REMOVED" />
          <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
        <data android:scheme="package" />
      </intent-filter>
  </receiver>

然后接收器的完整代码就是:

package com.generic.package;

import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class UpdateReceiver extends BroadcastReceiver
  {
  @Override
  public void onReceive(Context context, Intent intent)
    {
    Log.e("TEST","WENT INTO ONRECEIVE");
    }
  }

起初我以为是因为我在S5上测试它并且我没有MY_PACKAGE_REPLACED,所以我添加了它并在旧版本上进行了测试,但它还没有调用。在Logcat中,我可以在接收器列表中看到这个接收器。我唯一能想到的就是我使用Maven构建和安装 - 我有什么特别的东西吗?我还尝试在Manifest中向接收器添加各种标签,例如android:enabled =&#34; true&#34;和android:exported =&#34; true&#34;,以及为intent-filter添加优先级,但没有一个工作。

1 个答案:

答案 0 :(得分:0)

答案结果是这是一个Maven问题 - 当我将APK转移到我的手机并以这种方式安装时,一切都像正常一样被解雇了。获得的经验:即使它说它是一个安装&#34;通过Maven,它不会触发任何接收器!