adb打开网页_android 使用指定浏览器打开网页

梳理下流程:

枚举对应浏览器包名到数组中

数组循环根据包名找到对应的LaunchIntent

通过LaunchIntent找到对应的LaunchActivity的包名

Intent通过设置activity的包名+类名

/**

* 工具类

*/

public class CheckApkExist {

private static String ucPkgName = "com.uc.browser";

public static boolean checkApkExist(Context context, String packageName){

if (TextUtils.isEmpty(packageName))

return false;

try {

ApplicationInfo info = context.getPackageManager()

.getApplicationInfo(packageName,

PackageManager.GET_UNINSTALLED_PACKAGES);

return true;

} catch (PackageManager.NameNotFoundException e) {

return false;

}

}

/** 示例:uc 浏览器检测*/

public static boolean checkUCBrowserExist(Context context){

return checkApkExist(context, ucPkgName);

}

/**

* 从手机上搜索已安装浏览器程序打开网页,默认使用系统浏览器。

* 将 context 替换为当前上下文环境,ActivityClass or Context

*/

public void openBrowser(String url) {

String[] browser = {"com.tencent.mtt", "com.UCMobile", "com.uc.browser", "com.oupeng.browser", "com.oupeng.mini.android", "com.android.browser"};

Intent intent = null;

for (String br : browser) {

if (CheckApkExist.checkApkExist(context, br)) {

String clsName = null;

try {

PackageManager pm = context.getApplicationContext().getPackageManager();

Intent intent1 = pm.getLaunchIntentForPackage(br);

ComponentName act = intent1.resolveActivity(pm);

clsName = act.getClassName();

} catch (Exception e) {

}

if (clsName == null) {

break;

}

intent = new Intent();

intent.setAction("android.intent.action.VIEW");

Uri content_url = Uri.parse(url);

intent.setData(content_url);

intent.setClassName(br, clsName);

break;

}

}

if (intent == null) {

intent = new Intent();

intent.setAction("android.intent.action.VIEW");

Uri content_url = Uri.parse(url);

intent.setData(content_url);

}

context.startActivity(intent);

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博客目录列表(C与Linux部分)

一、C语言 1、C语言——关键字 2、C语言——位操作 3、C语言——数组、函数、指针 4、C语言——结构体 5、C语言——预编译 6、C语言——宏定义 7、C语言——字符串函数 8、C语言——可变参数 9、C语言——回调函数 10、数据结构——链表 11、数据结构——堆栈 12、数据结构——…

python-greenlet模块(协程)

12345678910111213141516from greenlet import greenletdef test1():print(12)gr2.switch()print(34)gr2.switch()def test2():print(56)gr1.switch()print(78)gr1 greenlet(test1)#启动一个协程gr2 greenlet(test2)#启动一个协程gr1.switch()#switch是协程切换高并发&#x…

我妈在深圳的这些日子

今天送了我丈母娘回家,平时在家里,我会叫妈。下面文章中写到的我爸、我妈、指的是我老丈人和丈母娘。上个周末,我跟我妈说,谢谢你过来帮忙我们照顾楠哥,辛苦你了。我说了两遍,可能她听的不是很清楚&#xf…

2010-04-25 搞定aftr

今天终于完全地把aftr给搞定了。 刚开始的时候,建了三台机器,甲,乙,丙,甲和乙通过ipv6相连,甲的ipv6地址为2001:0:0:1::2/64,乙的ipv6地址为2001:0:0:1::1/64,乙和丙通过ipv4相连&am…

linux下解包bin二进制文件_linux下如何使用docker二进制文件安装_docker离线安装

1,下载二进制文件https://download.docker.com/linux/static/stable/x86_64/docker-18.03.1-ce.tgz2,解压二进制文件tar xzvf docker-18.03.1-ce.tgz3,复制二进制文件到/usr/bin目录下cp docker/* /usr/bin/4,检查是否安装docker versionClient:Version: 18.03.1-ceAPI ve…

【腾讯面试题】兔子试毒

大家好,我是牛牛,经过了忙碌的一周,终于盼来了周五。今天给大家分享一道有趣有料的算法题,希望能让大家开启周末的好心情。01故事起源有1000瓶药水,其中有一瓶是毒药,只要喝上一滴,一天之后就必…

git clone 指定分支的内容

使用Git下载指定分支命令为:git clone -b 分支名仓库地址 使用Git下载v.2.8.1分支代码,使用命令:git clone -b v2.8.1 https://git.oschina.net/oschina/android-app.git转载于:https://www.cnblogs.com/pansidong/p/9284967.html

大型网站架构

一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富&#…

分享一个剪切板的小软件CopyQ

我是最近在工作的时候经常需要复制一些命令,而且这些命令如果用手敲的话会超级麻烦,所以体验了几个剪切板的小软件,这个是我体验之后觉得最不错的一个,分享给大家。软件链接地址https://github.com/hluk/CopyQ/releases软件图标我…

python2编码问题解决了吗_Python2编码问题

以下内容说的都是 python 2.x 版本简介基本概念Python “帮”你做的事情推荐姿势1、基本概念我们看到的输入输出都是‘字符’(characters),计算机(程序)并不能直接处理,需要转化成字节数据(bytes),因为程序只能处理 bytes 数据。例如&#xf…

GridView自定义分页

有时候的只是需要一些简单的但却是自定义的分页功能,但是又舍不得objectdatasource的排序功能,那就只有把pageddatasoure和objectdatasour结合起来, 由于pageddatasource实现的是IEnumberable,直接把objectdatasource赋给它是不行…

当年年仅18岁韩寒舌战群儒,受尽冷嘲热讽!

https://weibo.com/3251967895/Gk4nNu9Fr转载于:https://www.cnblogs.com/bakblog/p/9287258.html

在朋友圈求助的NTP问题~

之前朋友圈求助的问题最后是我一个朋友尝试了一天的配置「这个配置尝试的过程需要技术基础,但是不管如何的技术基础都是需要去不断的尝试的」,终于找到了方法,所以~我给他们送了秋天的第一杯奶茶~「是他们是因为他们都是一群我很喜欢的同事」…

JRE和JDK 1.3、1.4、1.5(5.0)、6.0 各版本下载地址大全(J2SDK,JavaSE JavaEE)

本文转载(http://hi.baidu.com/y66901356/blog/item/7d32bf0abf7d7c3ab0351d39.html)本人绝对支持原创!!!Java SE Development Kit(JDK)和Java Runtime Envirnment(JRE)1.3、1.4、1.5(5.0)、6.0 各版本下载地址大全 (J…

聊聊身边的嵌入式,英语学习利器点读笔

家里有小孩的朋友,可能对下面的这款产品不陌生。点读笔,一个会发声的电子产品,我当时为了给孩子做英语启蒙,买了小达人点读笔(上图最下方那个,另外两个分别是宝玩英语和巧虎配套的点读笔),用了好几年了&…

gps84转换gcj02公式_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换...

//定义一些常量var x_PI 3.14159265358979324 * 3000.0 / 180.0;var PI 3.1415926535897932384626;var a 6378245.0;var ee 0.00669342162296594323;/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* param bd_lon* param bd_lat* returns {…

javascript 15位和18位身份证的正则表达式及其验证

1、简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)(2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3}) (\d|X)?$/",$id_card)&#x…

EasyUI_datagrid

案例一丶jquery.easyui.min.js:10631 Uncaught TypeError: this.renderEmptyRow is not a function 解决方法:datagrid记录为空就会报错。是easyui里没处理return 空的方法。需要进行添加一些东西。具体我也不清楚, 案例二丶清除datagrid右侧空白区域 查…

三枚硬币自制收音机

大家好,我是记得诚。我们称这个收音机为三个硬币收音机是因为我们使用了三个硬币作为锚点,连接收音机各个部件,这将使我们的制作过程变得极为简单。在这个收音机中我们使用了一个特殊的10晶体管集成电路,使最后做出的收音机效果非…

clickhouse 增量更新_ClickHouse王炸功能即将来袭?

众所周知,MySQL 的用户群体很大,为了能够增强数据的实时性,很多解决方案会利用 binlog 将数据写入到 ClickHouse。为了能够监听 binlog 事件,我们需要用到类似 canal 这样的第三方中间件,这无疑增加了系统的复杂度。在…