我的A应用,依靠B应用,我想在卸载A应用的时候,连B一块卸载掉,怎么实现 ?(B应用最好是静默卸载)、我目前的做法是,B应用注册一个广播,当A被卸载时,B接受到系统广播,通过B的包名,调用系统卸载模块 Intent intent2 = new Intent(Intent.ACTION_DELETE, Uri.parse("package:" + packageName));
context.startActivity(intent2);
调用系统卸载模块以后,后台总会有Packageinstaller应用在跑,单击图标,将这个应用掉到前台,则提示找不到B应用。
正常卸载应用程序时,PackageInstaller应用图标不会出现在后台,同样的代码在acitivity执行时,也正常。为什么在receiver中却有这个bug呢?求指点,求解决方案。 谢谢!

解决方案 »

  1.   


       @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            //get intent information
            final Intent intent = getIntent();
            Uri packageURI = intent.getData();
            String packageName = packageURI.getEncodedSchemeSpecificPart();
            if(packageName == null) {
                Log.e(TAG, "Invalid package name:"+packageName);
                showDialog(DLG_APP_NOT_FOUND);
                return;
            }packageInstaller源代码的卸载入口activity有这段代码,
    你看看log是不是打了Invalid package name:
    PackageInstaller应用图标不会出现在后台 不知道你说的啥意思
      

  2.   

    我觉得肯能是flag  Intent.FLAG_ACTIVITY_NEW_TASK。有没有报什么异常?