Android 获取设备中已安装的默认浏览器

2023-12-03

我能够在启动器的帮助下获取所有应用程序Intent.CATEGORY_LAUNCHER.

因此,为了进行测试,我创建了一个测试活动,该活动包含一个按钮,如果我按下该按钮,它应该显示设备中的应用程序

NOTE: `it should not display specific. for example i needed only Browser it should display all browser applications.`

我以这种方式尝试了一个小代码:

btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_APP_BROWSER);

            List<ResolveInfo> mainLauncherList = getPackageManager().queryIntentActivities(intent, 0);
            System.out.println("the list iss = " +mainLauncherList);
        }
    });

该列表仅返回一个浏览器,即单一浏览器。


给意图一个动作而不是类别,并查询可以执行的动作ACTION_VIEW一个网址,像这样:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));

List<ResolveInfo> mainLauncherList = getPackageManager().queryIntentActivities(intent, 0);
Log.e("Browsers","the list iss = " +mainLauncherList);

返回的内容如下:

[ResolveInfo{44e9d350 com.android.browser.BrowserActivity p=0 o=0 m=0x208000}]

假设您安装了多个浏览器,它将包含所有浏览器。也许我误解了你的问题,但从技术上讲,这会返回与你尝试启动打开 URL 的意图时得到的应用程序相同的应用程序。

至于获取这些应用程序的启动器活动,因为您已经知道如何获取所有主要应用程序,并且根据我给出的代码(您想要的应用程序),您可以匹配包名称(大概)来找到启动器( ?)

UPDATE

ArrayList<String> allLaunchers = new ArrayList<String>();

Intent allApps = new Intent(Intent.ACTION_MAIN);
List<ResolveInfo> allAppList = getPackageManager().queryIntentActivities(allApps, 0);
for(int i =0;i<allAppList.size();i++) allLaunchers.add(allAppList.get(i).activityInfo.packageName);

Intent myApps = new Intent(Intent.ACTION_VIEW);
       myApps.setData(Uri.parse("http://www.google.es"));
List<ResolveInfo> myAppList = getPackageManager().queryIntentActivities(myApps, 0);
for(int i =0;i<myAppList.size();i++){
    if(allLaunchers.contains(myAppList.get(i).activityInfo.packageName)){
        Log.e("match",myAppList.get(i).activityInfo.packageName+"");
    }
}

正如我所说,您从启动器获取所有包,并将它们与能够执行操作(无论是拍照还是浏览网页)的包进行匹配。你应该能够让事情顺利进行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 获取设备中已安装的默认浏览器 的相关文章

随机推荐

  • C#性能分析-如何计算CPU周期?

    这是进行性能分析的有效方法吗 我想要获得纳秒精度并确定类型转换的性能 class PerformanceTest static double last 0 0 static List numericGenericData new List
  • 如何创建 html 输入文本区域,以便可以为某些单词添加下划线或设置其格式?

    我想要一个输入字段 我可以让javascript为输入字段的不同部分设置某些属性 一个简单的例子来演示我想做的事情 假设我想在输入文本区域中的所有咒语单词下划线 因此 当插入新字母时 JavaScript 将检查输入文本区域 并且对于与我的
  • RichtextBox 中的粗体

    我一直在研究我的富文本框 但遇到了一些奇怪的事情 我想将每一行的第一个单词加粗 使用此代码 RichTextBox bold richTextBox1 foreach string line in bold Lines string nam
  • 用于向下钻取图表的自己的后退按钮

    我有一个带有向下钻取数据的饼图 是否可以隐藏默认的后退按钮并从我自己的按钮触发后退功能 是的 这是可能的 只需创建您自己的按钮 然后单击调用chart drillUp 功能 看docs Highcharts v5 和 v6 在 Highch
  • AWS RDS 是否支持 MySQL 作为文档存储

    我能够连接普通的AWS RDS MySQL实例 5 7 16 但是 由于我必须使用 MySQL 作为文档存储 因此我通过安装 mysqlx 插件配置了 MySQL 实例 这是文档存储所需的 此后 我尝试连接同一实例上端口 33060 上的
  • YouTube 嵌入视频开始/停止事件

    我想知道 通过 iframe 嵌入 YouTube 视频是否会暴露某些事件 例如 onStart 或 onStop 您可以在其中指定一些回调 这是处理启动和停止事件的示例 HTML 文件 index html
  • 如何在 Spring Boot 中将 Json 字节数组转换为 AMQP?

    按照此 我有这个代码 Bean open fun messageConverter om ObjectMapper MessageConverter return Jackson2JsonMessageConverter om Bean o
  • 在 PySpark 2.0 中读取序列文件

    我有一个序列文件 其值如下所示 string value json value 我不关心字符串值 在 Scala 中我可以通过以下方式读取文件 val reader sc sequenceFile String String path va
  • 如何使用 PyGame 计时器事件?如何使用计时器向 pygame 屏幕添加时钟?

    我是 python 新手 因此决定尝试制作一个简单的游戏pygame 我想添加一个计时器 时钟来显示 你已经玩了 生存了多长时间 所以基本上创建了一个时钟 然而 我四处搜寻并得到了time sleep 1 它确实可以作为时钟使用 但它会减慢
  • 将多个 Intent 从单个 Activity 发送到另一个 Activity

    我对 android 很陌生 我正在尝试将用户输入的数据 他们的名字 发送到另一个活动 我过去能够使用意图在活动之间发送单行 但我无法弄清楚如何将两个不同的字符串发送到两个不同的 TextView 这是到目前为止我的 MainActivit
  • 使用 jQuery 解析 JSON

    我正在尝试使用 jQuery 解析以下 JSON 并获取每个 id 值 有人可以建议吗 id 1 name Boat id 2 name Cable 到目前为止我有 each test function i item alert item
  • 在 R 中查找数组中最接近元素的最快方法

    我想找到 R 中最快的方法来识别 Ytimes 数组中最接近给定 Xtimes 值的元素索引 到目前为止 我一直在使用一个简单的 for 循环 但必须有更好的方法来做到这一点 Xtimes lt c 1 5 8 10 15 19 23 34
  • Swift / 如何使用 popViewController 调用委托

    我读过了这个线程 以及类似的其他 从下到上 但它根本不符合我的需求 我有一个UIViewController inside UIPageViewController在一个UINavigationController 导航到第二个 ViewC
  • C# 事件去抖

    我正在监听硬件事件消息 但我需要对其进行反跳以避免太多查询 这是一个发送机器状态的硬件事件 我必须将其存储在数据库中以用于统计目的 有时它的状态会经常变化 闪烁 在这种情况下 我只想存储 稳定 状态 并且我想通过在将状态存储到数据库之前简单
  • Base64 编码的图像未在 Gmail 中显示

    我有一封嵌入的 HTML 电子邮件 其中我使用base64编码图像 通过 Chrome 访问时 图像不会在 Gmail 中显示 但当通过邮件客户端 Mac 上的邮件应用程序 访问相同的邮件时 它工作正常 我已正确设置标题 任何想法 My c
  • 如何从 WCF 中的客户端消息检查器获取标头值

    我正在为我正在处理的某些服务创建一个 Web 测试客户端 作为其要求的一部分 我希望能够显示完整的请求和响应 SOAP 消息 以及向用户显示的 HTTP 标头 我实现了一个 MessageInspector 类实现IClient消息检查器
  • C# 如何在按住鼠标按钮时循环

    你能为我指出正确的方向吗 我试图在按下表单按钮时触发循环 pseudocode While button1 is pressed value1 1 当然 当释放按钮时停止循环 为了避免使用线程 您可以添加Timer表单 控件上的组件 只需在
  • 如何使用Hibernate将初始数据导入数据库?

    在部署应用程序时 我经常使用 Hibernate 的创建数据库模式的功能来简化部署 通过配置 hibernate hbm2ddl auto 属性可以轻松实现这一点 但是 有时我还需要向数据库插入一些初始数据 例如 root 用户 有没有办法
  • 如何从 JSON 对象中删除条目?

    helper to turn PSCustomObject into a list of key value pairs function Get ObjectMembers CmdletBinding Param Parameter Ma
  • Android 获取设备中已安装的默认浏览器

    我能够在启动器的帮助下获取所有应用程序Intent CATEGORY LAUNCHER 因此 为了进行测试 我创建了一个测试活动 该活动包含一个按钮 如果我按下该按钮 它应该显示设备中的应用程序 NOTE it should not dis