Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 宽频广播接收器,用于收听特定的数据包_Android_Broadcastreceiver - Fatal编程技术网

Android 宽频广播接收器,用于收听特定的数据包

Android 宽频广播接收器,用于收听特定的数据包,android,broadcastreceiver,Android,Broadcastreceiver,我的应用程序有一个BroadCast接收器,它监听卸载一个包,然后根据需要启动一个透明的活动。(我的应用程序本身可以选择卸载仅与我的其他应用程序相关的包)我在清单中注册了我的接收者,如下所示 <receiver android:name=".PackageRemoveReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_RE

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

<receiver android:name=".PackageRemoveReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_REMOVED"/> 
            <data android:scheme="package"/>
        </intent-filter>
    </receiver>  
所以,在听了意图之后,它就开始了我的活动。到目前为止,一切正常

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


我只想在移除特定包时运行BroadCast。是否可能,如果是,如何执行?

onReceive()
中检查包名:


只能在我的活动中使用此接收器吗?也就是说,如果卸载仅从我的应用程序中完成,我希望获得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);

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