我静态注册一个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添加优先级,但没有一个工作。
答案 0 :(得分:0)
答案结果是这是一个Maven问题 - 当我将APK转移到我的手机并以这种方式安装时,一切都像正常一样被解雇了。获得的经验:即使它说它是一个安装&#34;通过Maven,它不会触发任何接收器!