广播演员接收器,以听取特定的包删除

时间:2012-07-30 09:12:37

标签: android broadcastreceiver

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

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

}    

所以,在听完意图后,它正在打开我的活动。到目前为止它工作正常。

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

我希望只在删除特定包时运行广播。有可能,如果是的话怎么做?

1 个答案:

答案 0 :(得分:0)

检查onReceive()中的包名称:

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getDataString().equals("package:your.package.name")) {
        ...
}