我的应用程序有一个广泛的强制转换接收器,用于侦听卸载程序包,然后它将根据需要启动透明活动。 (我的应用程序本身可以选择卸载与我的其他应用程序相关的软件包)我在清单中注册了我的接收器,如下所示。
<receiver android:name=".PackageRemoveReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
我的接收器类如下。
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
this.context = context;
boolean replacing = intent.getBooleanExtra(Intent.EXTRA_DATA_REMOVED, false);
Log.d("Log","getting receivers");
if(replacing){
......
......
startActivity(context);
}
private void startActivity(Context context) {
// TODO Auto-generated method stub
Intent i = new Intent(context, TransparentActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
所以,在听完意图后,它正在打开我的活动。到目前为止它工作正常。
但是,每当我从设置中卸载不同的应用程序(我的应用程序除外)时,它总是会监听并打开我的透明活动。
我希望只在删除特定包时运行广播。有可能,如果是的话怎么做?
答案 0 :(得分:0)
检查onReceive()
中的包名称:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getDataString().equals("package:your.package.name")) {
...
}