如何去除程序的默认启动:Ignoring clearPackagePreferredActivities() from uid *

有些系统权限即使在我们应用程序的AndroidMenifest.xml中经过了配置,但还是不好使,原因:我们的apk的签名必须要与系统的签名保持一致,才能使其发挥作用。如何让apk签名与系统签名保持一致,请参考我博文http://blog.sina.com.cn/s/blog_74c22b210100urzu.html


当系统安装了至少2个HomeScreen时,如何通过触发一个按钮事件调出以下对话框。
看起来很简单吧,做起来可没那么容易。哥在这里不得不鄙视自己,弄了整整一个下午,终于发现其中的玄机。

如何解决Ignoring <wbr>clearPackagePreferredAct<wbr>ivities() <wbr>from <wbr>uid <wbr>*

开始我在按钮的监听事件里,直接调用如下方法。

private void startSelectHomeDialog() {
       IntentFilter filter = new IntentFilter();
       filter.addAction(Intent.ACTION_MAIN);
       filter.addCategory(Intent.CATEGORY_HOME);
       filter.addCategory(Intent.CATEGORY_DEFAULT);

       PackageManager manager = getPackageManager();
       Intent intent = new Intent(Intent.ACTION_MAIN, null);
       intent.addCategory(Intent.CATEGORY_HOME);
       intent.addCategory(Intent.CATEGORY_DEFAULT);
       List<ResolveInfo> list = manager.queryIntentActivities(intent, 0);
       for (int i = 0; i < list.size(); i++) {
             // 作用是: 清除之前选择的Homescreen,比如即使你手动设置了Launcher作为你的                                       //Homescreen,执行以下方法之后,Launcher就不再是默认的Homescreen了。
           manager.clearPackagePreferredAct ivities(list.get(i).activityInfo.packageName);
       }

       Intent intent2 = new Intent(Intent.ACTION_MAIN);
       intent2.addCategory(Intent.CATEGORY_HOME);
       startActivity(intent2);
}

发现无发弹出上图所示的Dialog,通过DDMS Log输出,提示信息:
Ignoring clearPackagePreferredAct ivities() from uid 10108

然后,这说明该方法被忽略了,是不是由于什么异常导致,我强制捕获了一下:
try{
             manager.clearPackagePreferredAct ivities(list.get(i).activityInfo.packageName);
}catch(Exception e){
                 Log.e(TAG, "exception info: ", e);

提示我缺少了权限“android.permission.SET_PREFERRED_APPLICATIONS”, 该权限属于系统,于是我在AndroidMenifest.xml中加入了该权限。

但是点击按钮还是没有反应,起初我认为是clearPackagePreferredAct ivities不起作用. 想啊,想啊,在旁边哥们那里做了同样的修改,试了一下,居然是好使的。这哥们的一个习惯帮了我一个大忙,他每次安装apk,都是安装签了名的apk。原因就在这里,apk签过名以后,android.permission.SET_PREFERRED_APPLICATIONS我们就可以使用该权限了。

总结:原因有2点。
1. 在应用程序的AnroidMenifest.xml中添加android.permission.SET_PREFERRED_APPLICATIONS 权限
2.  对apk进行签名,因为apk经过签名与系统签名保持一致,android.permission.SET_PREFERRED_APPLICATIONS    权限才能发挥作用
  如何让apk签名与系统签名保持一致,请参考我博文  http://blog.sina.com.cn/s/blog_74c22b210100urzu.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值