android查询设置默认应用
Android作为一个伟大的系统,自然提供了设置默认打开程序的实现.在这篇文章中,我会介绍如何在Android系统中设置默认的程序. 在设置默认程序之前,无非有两种情况,一种是已经有默认的程序,另一种则是没有任何默认程序.
检测是否有默认的程序
检查是必须的,因为结果关乎着我们下一步该怎么做.
1 2 3 4 5 6 7 | |
其对应的日志输出如下
1
| |
如果没有默认的程序,那么就会显示出默认的就会显示com.android.internal.app.ResolverActivity,那么这个ResolverActivity是什么呢,其实它就是一个选择打开程序的对话框,其庐山真面目应该是这样
如果我们设置了傲游浏览器作为我们的默认浏览器,那么默认的程序就应该显示关于傲游浏览器相关的信息. 如下.
1
| |
那么如何判断是否设置了默认的程序呢,上面的方法默认的ResolveInfo,如果info.activityInfo.packageName为android,则没有设置,否则,有默认的程序.
1 2 3 4 5 | |
如果有默认程序
我们需要做的是将现在的默认的程序的默认设置清除.
我们能通过代码直接将默认设置改写成我们的么,实际上是不行的,因为权限的问题. 原因是这样的Android因为基于Linux 内核,Linux有着很棒的用户概念,而Android中每个应用就是一个在Linux内核中的用户.两个级别相同的用户无法删除对方.
所以,我们只能交给用户手动做.当然这也是绝大多数程序的做法.你需要做的就是将使用者带到程序详情页,通过这段代码可以跳转到应用详情页.
1 2 3 4 5 | |
当跳转到已安装的应用详情页之后,你应该提示用处点击Clear Default 按钮.
如果用户从安装详情页回到你的程序,你需要检测是不是用户清理了默认的程序设置,判断依据还是是否有默认的程序设置,如果还有默认的,继续提示需要手动清理其他已设置的程序,直到用户彻底清理完成之后,然后按照下面的没有默认设置程序的情况处理.
注意,存在多次清理的情况,如设置浏览器,先清理了UC默认设置后,可能还需要清理海豚浏览器的情况.
没有默认的程序.
如果没有默认的程序,我们就需要设置我们希望的程序作为默认,但是,这页不能在代码中实现,还是需要人为的交互选择才可以.你需要做的就是使用类似如下代码,然后弹出一个提示,告诉用户选择你的程序作为默认的程序.至于提示语你可以充分发挥你的想象力.
1 2 3 4 5 6 7 8 | |
取消自己的默认程序设置
1 2 3 4 | |
上述方法只能清理自己的默认设置.
更近一步
实际上关于默认设置的配置文件存放在/data/system/packages.xml
1 2 3 4 5 6 7 8 9 10 11 12 | |
One More Thing
- 提问:当一个程序程序安装或卸载,系统会做什么
-
回答:当一个程序安装或者卸载,以浏览器为例子,如果你安装了一个傲游浏览器或者卸载了一个UC浏览器,当你从外部程序打开一个链接时,系统不会使用之前的默认程序打开,而是弹出一个选择对话框供你选择.
-
提问:什么时候系统会弹出选择打开程序列表
- 回答:经本人测试,实际是这样的,当有一个Intent过来的时候,系统会动态地收集能处理的Activity,然后从/data/system/packages.xml 读取进行比较,如果两者不同,则弹出选择对话框.
原文链接:http://droidyue.com/blog/2014/07/13/set-preferred-application-in-android-chinese-edition/
相关文章
- Android中加入水平线和垂直线
- uniapp - 简单的方式生成app证书(android和ios)
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案
- Android-68-Tomcat各种启动错误的解决的方法,如:Exception in thread "Thread-6" NoClassDefFoundError,Document base E:
- Android Activity与Fragment之间的传值概述
- Android RecyclerView(九)滑动监听综述
- Android studio 2.0--android增量更新的那些事
- Android开发之JNI(一)--HelloWorld及遇到的错误解析
- Android之 ImageView android:src和tools:src的区别是什么?
- Android-studio 连接真机 调试weex项目
- Android应用性能优化最佳实践导读
- Android 中如何从一个App启动另外一个App(如启动支付界面、启动地图界面、应用商场下载App等场景)
- 《Android 应用案例开发大全(第二版)》——1.4节 DDMS的灵活应用
- 《Android游戏开发详解》一2.15 改进程序
- 《Android 应用测试指南》——第1章,第1.6节小结
- 《精通Android 实例开发》——第1章,第1.16节断点调试Android程序
- 《Android深度探索(卷2):系统应用源代码分析与ROM定制》——第6章,第6.4节分析第一个Android系统应用:计算器
- 《Android应用开发入门经典(第3版)》——第6.6节小结
- Android---- 获取当前应用的版本号和当前android系统的版本号
- Android:Drag and Drop的应用
- android开发:Android 中自定义属性(attr.xml,TypedArray)的使用
- android 中怎么控制checkbox中文本与左侧box的距离