我如何以编程方式获取系统中的网络浏览器列表?
更新:我知道该应用程序的清单文件必须具有属性android:scheme="http"
或android:scheme="https"
。我知道如何获取系统中所有应用程序的列表getPackageManager().getInstalledPackages( 0);
。我不知道如何获得此属性?
例如,您可以检查系统中的哪些Activities
可以处理特定的Intent
,如下所示:
PackageManager packageManager = context.getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : list) {
String name = info.name;
}
希望这对您有用。
您可以使用程序包管理器以及打开浏览器的意图来获取设备中所有浏览器的列表。要获取应用程序的程序包名称,可以使用it.activityInfo.packageName
,其中it
是列表项。
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.aurl.com"))
val browsersList = packageManager.queryIntentActivities(browserIntent,
PackageManager.MATCH_ALL)
browsersList.forEach {
val packageName = it.activityInfo.packageName
}