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查询设置默认应用相关推荐
- android 固定launcher,android Launcher3设置默认桌面应用
android launcher3 设置默认桌面应用,供大家参考,具体内容如下 launcher3 的默认桌面应用是在 res/xml里 默认有4种样式 default_workspace_3x3.x ...
- android ROM设置默认Launcher(主屏幕应用)
Launcher Launcher是android系统的桌面.是android系统的主要组件.android系统允许存在多个Launcher并设置默认主界面. 应用程序作为Home(主界面)需在Act ...
- android中设置默认语言、默认时区
1. 设置默认时区: /build/tools/buildinfo.sh安卓本来应该在这里面加: + echo "persist.sys.timezone=XXX" ...
- 设置默认网关端口 android,IP设置默认网关的方法 | 192.168.1.1手机登陆
IP设置默认网关 IP设置默认网关可以说是电脑操作的最基本的技巧,那么到底该怎么设置呢?下面是设置步骤的简要介绍. IP设置默认网关的一步: 1,打开"控制面板":"查看 ...
- android如何设置默认关闭虚拟按钮,android – Chrome自定义标签更改默认关闭按钮不起作用...
Android Studio 2.3 我正在尝试更改自定义chrome选项卡的操作栏上的默认关闭按钮.我试图设置使用setCloseButtonIcon()但是,默认关闭按钮仍然显示.我想改变靠近一个 ...
- android设置为默认短信应用,如何在Android上设置默认短信应用 | MOS86
与iOS不同,Android允许您使用第三方应用来执行基本功能,例如发短信. 这是您可以在Android手机上设置新的默认短信应用的方法. 首先,您需要安装要使用的替换短信应用程序. Play商店上有 ...
- 如何在Android上设置默认短信应用
Noyna/ShutterstockNoyna /快门 Unlike iOS, Android allows you to use third-party apps to perform essent ...
- Android 11 设置默认音量最大
不少项目都有这种类似的需求,网上相关文章也不少,但由于Android一直在升级,部分接口有了相应的变化,现就原码阅读后,大致修改如下: frameworks/base/services/core/ja ...
- android切换默认应用_如何在Android上设置默认应用
android切换默认应用 When you have multiple applications that do the same thing-like browsers, for example- ...
最新文章
- nginx配置解决vue单页面打包文件大,首次加载慢的问题
- linux中sed的基本用法,linux sed用法
- DataCapa 启动
- CentOS7 安装Mysql5.6 后启动失败处理 The server quit without updating PID file
- Mysql字符串连接
- SpringBoot 配置文件说明
- 5.hbase表新增数据同步之add_peer
- SpringBoot前后端分离登陆验证码实现以及不显示问题
- 【Python】基于VB、Python、PythonGUI的BMI计算器小程序
- 【Codecs系列】HEVC标准(九):环路滤波技术之SAO
- JavaScript中常见的设计模式
- 计算机word降序排列怎么做,怎么降序排列word
- golang操作elasticsearch(oliver/elastic使用文档)
- Dynamic Web Module 4.0 requires Java 1.8 or newer.
- PPT画图保存时自动压缩图片问题
- docker使用-p参数映射端口失败
- Android 设置背景透明
- 2023在家赚钱怎么做,有什么适合在家做的副业项目
- java综合知识点总结-必背
- java中调用谷歌的无界浏览器对页面元素进行截图
热门文章
- 小米无线显示没有设备连接到服务器,小米盒子连不上网在进入无线网络时居然搜索不到...
- 点亮 Linux 驱动开发路上的第一个灯
- Windows Server 2008 R2 评估版到期 如何延长授权日期
- 解决软件快捷键不可用的问题
- Android混淆总结
- 自己收集和制作的易语言模块
- 产品分析报告如何做?
- python读取odb_Python提取Abaqus ODB中的场变量(Field output)与历史变量(History output)方法...
- 牛逼!用 AI 实现 C++、Java、Python 代码互译!
- Win 10 再曝致命 BUG,微软:暂不清楚问题根源