0

我的应用程序有一个广播接收器,它监听卸载包,然后它将根据需要启动一个透明的活动。(我的应用程序本身可以选择卸载仅与我的其他应用程序相关的包)我在清单中注册了我的接收器,如下所示。

<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);

}    

因此,在听取了意图之后,它正在打开我的活动。到这里它工作正常。

但是,每当我从设置中卸载不同的应用程序(我的应用程序除外)时,它总是在监听并打开我的透明活动。

每当删除特定软件包时,我只想运行广播。有可能吗,如果可以,该怎么做?

4

1 回答 1

0

检查包名称onReceive()

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getDataString().equals("package:your.package.name")) {
        ...
}
于 2012-07-30T10:07:33.230 回答