我正在尝试注册广播接收器以接收包事件的广播事件。以下是清单文件中的代码和接收器。日志状态永远不会发生,但我可以清楚地看到“HomeLoaders”(Launcher)调试语句的相同广播触发。我错过了什么?
public class IntentListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i("INTENT LISTNER:", intent.getAction());
}
}
<receiver android:name="IntentListener" android:enabled="true" android:exported="true">
<intent-filter>
<data android:scheme="package"></data>
<action android:name="android.intent.action.PACKAGE_ADDED"></action>
<action android:name="android.intent.action.PACKAGE_ADDED"></action>
<action android:name="android.intent.action.PACKAGE_CHANGED"></action>
</intent-filter>
</receiver>
答案 0 :(得分:4)
清单中注册的组件可能无法接收这些Intent
,但只有通过registerReceiver()
以Java注册的接收方才能接收到这些{{1}}。
答案 1 :(得分:0)
这是我的清单,没有
<category android:name="android.intent.category.DEFAULT" />
我的应用仅检测到Android Market应用安装,但未删除。现在它还接收非Android Market应用广播。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".SomeActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.som.pakage.PackageInstallReceiver" >
<intent-filter >
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
</receiver>
</application>
答案 2 :(得分:0)
这三个意图即
Intent.ACTION_PACKAGE_ADDED
Intent.ACTION_PACKAGE_REMOVED
Intent.ACTION_PACKAGE_CHANGED
当系统播放时,有
Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT
添加了标志,以便只有已注册的接收器才能接收广播,并且不会启动广播接收器组件。有关更多详细信息,请参阅Intent和PackageManagerService类源。