安卓系统浏览器开发

预置某个浏览器为系统默认的浏览器

描述:

当系统存在多个浏览器时,如何预置某个浏览器为系统默认的浏览器?

方法:

1.在PackageManagerService.java中的构造函数结尾添加:setDefaultBrowser();

2.setDefaultBrowser()的具体实现:

private final void setDefaultBrowser(){

                   Log.d("debug_default","setDefaultBrowser is called.");

                   if(!isFirstBoot()) {

                            Log.d("debug_default","not first boot, return");

                            return;

                            }

                  

                   String str1 = "android.intent.category.DEFAULT";

                   String str2 = "android.intent.category.BROWSABLE";

                   String str3 = "android.intent.action.VIEW";

                   //intent filter

                   IntentFilter filter = new IntentFilter(str3);

                   filter.addCategory(str1);

                   filter.addCategory(str2);

                   filter.addDataScheme("http");

        

                   //intent

                   Intent intent = new Intent(str3);

                   intent.addCategory(str2);

                   intent.addCategory(str1);

                   Uri uri = Uri.parse("http://");

                   intent.setDataAndType(uri, null);

                  

                   //set UC,if your want set other browser as default, modify below code, add package name and activiy name

                  ComponentName component = new ComponentName("packageName ","activityName");

                  

                   //find all browsers

                   List<ResolveInfo> resolveInfoList = queryIntentActivities(intent,intent.getType(),PackageManager.GET_INTENT_FILTERS, 0);

                   int size = resolveInfoList.size();

                   ComponentName[] arrayOfComponentName = new ComponentName[size];

                   //make sure the default browser in phone

                   boolean no_UC = true;

                   for (int i = 0; i < size; i++)

                   {

                            ActivityInfo activityInfo = resolveInfoList.get(i).activityInfo;

                            String packageName = activityInfo.packageName;

                            String className = activityInfo.name;

                           if (packageName.equals("packageName")) no_UC = false;

                           

                            ComponentName componentName = new ComponentName(packageName, className);

                            arrayOfComponentName[i] = componentName;

                   }

                   if (no_UC){

                            return;

                            }

                   //set default

                   addPreferredActivity2(filter,IntentFilter.MATCH_CATEGORY_SCHEME, arrayOfComponentName,component);

                   }

3.增加addPreferredActivity2接口(还是在PackageManagerService.java中):

public void addPreferredActivity2(IntentFilter filter, int match,

            ComponentName[] set, ComponentName activity) {

        // writer

        synchronized (mPackages) {           

            Slog.i(TAG, "Adding preferred activity " + activity + ":");

            filter.dump(new LogPrinter(Log.INFO, TAG), "  ");

          

mSettings.editPreferredActivitiesLPw(0).addFilter(

                    new PreferredActivity(filter, match, set, activity));

            mSettings.writePackageRestrictionsLPr(0);

        }

    }

修改网页默认字体大小

用HTMLViewer浏览html页面,点击页面中的邮箱地址,打开邮箱应用 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/350523.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx踩坑记录 配置文件中的include不能嵌套 (include的文件里不能再include其他文件了)

上一篇文章介绍了配置文件有多个位置&#xff0c;并且可以采用include实现主配置文件分文件的个性化配置模式&#xff1a;Nginx配置文件 所在路径 到底在哪&#xff1f;_身价五毛的博客-CSDN博客 然后就又踩坑了&#xff0c;include不能嵌套调用&#xff0c;即&#xff1a; …

Vulkan内存模型+管理

前言 最近在研究Vulkan&#xff0c;在Vulkan中使用内存是个麻烦的过程&#xff0c;而且容易用错&#xff0c;今天就给大家分享下Vulkan的内存模型。 内存&#xff0c;在任何时候都是个稀缺的资源&#xff0c;内存管理更是个让人望而却步的事情。在这个崇尚用户体验的今天&…

自学测试半年,终于收到了字节的offer,那一刻我哭出了声...

我是一名毕业于普通一本的化学专业学生&#xff0c;毕业的两年时间里&#xff0c;我一直奔波在化工厂里。每天工作三班倒&#xff0c;下了班就是一包烟一瓶酒&#xff0c;生活过得非常堕落。 原本想着虽然每天很累&#xff0c;但是至少稳定。然而没有想到的是&#xff0c;化工…

注册表启动项设置方法

1、按winr&#xff0c;打开运行输入框&#xff0c;输入regedit&#xff0c;打开注册表。 2、在注册表输入框中复制下面路径&#xff1a; \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 3、新增一条开机启动项 右键 -新建-字符串值&#xff0c;修改启动项…

计算机启动项在什么地方找,W7系统注册表开机启动项在哪里

开机启动项除了可以使用MSConfig命令打开以外&#xff0c;也能使用第三方工具、注册表查看开机启动项&#xff0c;因为数值的存在&#xff0c;注册表看到的启动项比较准确。为了个人信息安全&#xff0c;使用注册表编辑开机启动项以更好的杜绝病毒自启动。阅读下文了解w7系统注…

WIN10 注册表添加启动项

1、打开运行&#xff0c;输入“regedit”&#xff0c;打开注册表。 2、在注册表中找到如下位置\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,右键“Run”新建一个字符串类型的键值。 3、右键新建的键值&#xff0c;选择“修改”&#xff0c;将数值名称…

WINDOW 注册表添加启动项

注册表添加启动项 1、打开运行&#xff0c;输入“regedit”&#xff0c;打开注册表。 2、在注册表中找到如下位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run&#xff0c;winwin7.com右键“Run”新建一个字符串类型的键值。 3、右键新建的键值&…

修改注册表开机启动项

首先我们启动项的位置&#xff0c;它有两个一个是user一个是michine我们先来看HKEY_CURRENT_USER下面的&#xff0c;打开注册表方式非常简单笔记本winR台式机可以直接点击开始运行输入regedit 找到注册表之后依次展开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVe…

win10添加开机启动项_Windows系统注册表添加开机启动项

Windows 7系统我们可以把需要开机启动的软件把快捷键放到(开始/程序/启动)就可以了&#xff0c;而Windows 10系统没有(开始/程序/启动)启动项&#xff0c;我们要添加软件开机自动启动就需要到注册表添加修改&#xff0c;而注册表里面添加启动项有两个类型&#xff0c; 1、[HKEY…

屏蔽360阻止远程执行变更注册表自启动数据的办法

屏蔽360阻止远程执行变更注册表自启动数据的办法 运程服务器上的程序&#xff0c;由于需要。我在服务器中&#xff0c;加入更新升级自身&#xff08;exe&#xff09;文件&#xff0c;并变更操作系统自启动数据的代码。 实践证明&#xff0c;通过客户端&#xff0c;调用运程服务…

实验一——病毒注册表操作

【实验内容】 &#xff08;1&#xff09;强制隐藏.exe文件的扩展名 刚开始应用程序的exe扩展名都是可见的 1、注册表项&#xff1a;HKEY_CLASS_ROOT\exefile&#xff0c; 2、新建字符串值&#xff1a;取名为NeverShowExt。 用Mytool工具&#xff1a; 直接在注册表中添加 …

win7系统注册表开机启动项如何打开?

在运行窗口输入MSConfig命令不仅可以打开开机启动项&#xff0c;也能使用第三方工具、注册表查看开机启动项&#xff0c;注册表看到的启动项比较准确。而且使用注册表编辑开机启动项以更好的杜绝病毒自启动。一些win7的用户反馈说不知道win7系统注册表开机启动项如何打开&#…

揭秘广告投放的9大关键环节,了解真相让你成为广告投放高手!

正式开始本章的内容之前&#xff0c;先来简单复习一下上一章的主要内容&#xff1a; 核心要点1&#xff1a;广告投放的意义主要有三点&#xff1a;传播品牌、宣传产品、促成转化&#xff1b; 核心要点2&#xff1a;广告投放的主要流程有这样 9 个阶段&#xff1a; 本章我们以…

(栈和队列) 1047. 删除字符串中的所有相邻重复项 ——【Leetcode每日一题】

❓1047. 删除字符串中的所有相邻重复项 难度&#xff1a;简单 给出由小写字母组成的字符串 S&#xff0c;重复项删除操作会选择两个相邻且相同的字母&#xff0c;并删除它们。 在 S 上反复执行重复项删除操作&#xff0c;直到无法继续删除。 在完成所有重复项删除操作后返回…

【阿里内部教程】python初阶:基础语法 python全栈自动化测试系类

目录 很多小伙伴可能都没有看过凡哥的视频&#xff0c;所以大家可能对凡哥不是很了解这里先和大家来个自我介绍 凡哥我已经有着十二年互联网自动化测试和测试开发工程师&#xff0c;拥有丰富的自动化测试平台及测试开发经验&#xff0c;擅长接口测试、Python自动化全栈&#x…

前端面试题——Vue 高频

目录 一、Vue的基本原理 二、双向数据绑定的原理 三、MVVM、MVC、MVP的区别 四、Computed 和 Watch 的区别 五、Computed 和 Methods 的区别 六、v-if 和 v-show的区别 七、data为什么是一个函数而不是对象 八、Vue 单页应用与多页应用的区别 九、对 React 和 Vue 的理…

今天面了个字节跳动拿30k出来的测试大佬,让我见识到了什么是天花板

2022年堪称大学生就业最难的一年&#xff0c;应届毕业生人数是1076万。失业率超50%&#xff01; 但是我观察到一个数据&#xff0c;那就是已经就业的毕业生中&#xff0c;计算机通信等行业最受毕业生欢迎&#xff01; 计算机IT行业薪资高&#xff0c;平均薪资是文科其他岗位的…

Proxifier+secureCRT建立隧道

一、Proxifier新建规则 1、新建服务 这里端口自己随便填。 2、新建规则 二、secureCRT设置端口转发 注意&#xff0c;这里端口选择与proxifier设置的端口一致 初步理解是&#xff1a;本地无法直接访问上海数据库&#xff0c;但是可以通过secureCRT连接的跳板机进行访问。该设…

Proxifier实现抓包

Proxifier实现抓包 通过Proxifier代理实现抓包&#xff0c;如微信小程序 burpProxifier微信小程序 burp设置&#xff1a; 微信小程序&#xff1a; 1.查看任务管理器 2.找到已打开的小程序名&#xff0c;右键打开该程序的路径&#xff08;选择打开文件所在的位置&#xff09…

proxifier软件最新安装教程

目录 一、官网地址 二、软件介绍 三、软件下载 四、安装步骤 一、官网地址 官网地址&#xff1a;https://www.proxifier.com/ 二、软件介绍 Proxifier是一款功能非常强大的socks5客户端&#xff0c;可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理…