在Android意图卸载包时未正确处理异常

时间:2014-09-30 22:53:41

标签: android android-intent exception-handling

如果我传入手机上存在的包名,以下代码将卸载设备上的包。

public static String Execute(Context myContext, String packageName){

        Intent intent = new Intent(Intent.ACTION_DELETE);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        try{
            intent.setData(Uri.parse("package:" + packageName));
            myContext.startActivity(intent);
        }catch(Exception e){
            System.out.println("package " + packageName + " not installed");
            return "Package was not uninstalled";
        }

        return "Package " + packageName + " uninstalled.";
    }

但是,如果我传入手机上没有的套餐名称,我的例外情况就不会被处理,而且我收到错误消息

  

" [packageName]"

中的packageName或componentName无效

stack trace

然后返回语句" Package [packageName] uninstalled"退回。我的异常处理有什么问题?如果发生错误,我希望执行/返回catch语句中的代码,但它不起作用。

1 个答案:

答案 0 :(得分:2)

  

我的例外没有处理

这是因为它不是例外,不是来自你的过程。

  

我的异常处理有什么问题?

除了对这种情况不起作用外,没什么。

在尝试删除软件包之前,使用PackageManager查看软件包是否存在。