如何在 android 中获取 OS 个默认应用
How can I get OS default apps in android
我正在开发启动器应用程序,我需要检索 Android OS 默认 Phone 应用程序、浏览器应用程序和 SMS 应用程序的应用程序信息(应用程序名称、程序包名称、启动器图标)。以下代码用于获取所有可启动的应用程序。
private static List<ApplicationInfo> getInstalledApps(Context context, PackageManager pm) {
List<ApplicationInfo> installedApps = context.getPackageManager().getInstalledApplications(0);
List<ApplicationInfo> laughableInstalledApps = new ArrayList<>();
for(int i =0; i<installedApps.size(); i++){
if(pm.getLaunchIntentForPackage(installedApps.get(i).packageName) != null){
laughableInstalledApps.add(installedApps.get(i));
}
}
return laughableInstalledApps;
}
尝试使用 PackageManager#getPreferredActivities(java.util.List, java.util.List, java.lang.String),其中第一个参数是 IntentFilter
的列表,您希望为其获取默认应用程序。然后答案写在作为第二个参数传递的列表中。
Here 是您可能会尝试查找默认应用的一些常见意图。
在花了一些时间研究代码之后,我找到了一种方法来获得我想要的东西。
默认拨号应用程序
Intent mainIntent = new Intent(Intent.ACTION_DIAL, null);
mainIntent.addCategory(Intent.CATEGORY_DEFAULT);
List<ResolveInfo> pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0);
ActivityInfo info = pkgAppsList.get(0).activityInfo;
默认短信应用程序
String smsPkgName = Telephony.Sms.getDefaultSmsPackage(context);
ApplicationInfo info = getPackageManager().getApplicationInfo(smsPkgName, 0);
默认浏览器应用程序
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"));
ResolveInfo resolveInfo = getPackageManager().resolveActivity(browserIntent,
PackageManager.MATCH_DEFAULT_ONLY);
ActivityInfo info = resolveInfo.activityInfo;
我正在开发启动器应用程序,我需要检索 Android OS 默认 Phone 应用程序、浏览器应用程序和 SMS 应用程序的应用程序信息(应用程序名称、程序包名称、启动器图标)。以下代码用于获取所有可启动的应用程序。
private static List<ApplicationInfo> getInstalledApps(Context context, PackageManager pm) {
List<ApplicationInfo> installedApps = context.getPackageManager().getInstalledApplications(0);
List<ApplicationInfo> laughableInstalledApps = new ArrayList<>();
for(int i =0; i<installedApps.size(); i++){
if(pm.getLaunchIntentForPackage(installedApps.get(i).packageName) != null){
laughableInstalledApps.add(installedApps.get(i));
}
}
return laughableInstalledApps;
}
尝试使用 PackageManager#getPreferredActivities(java.util.List, java.util.List, java.lang.String),其中第一个参数是 IntentFilter
的列表,您希望为其获取默认应用程序。然后答案写在作为第二个参数传递的列表中。
Here 是您可能会尝试查找默认应用的一些常见意图。
在花了一些时间研究代码之后,我找到了一种方法来获得我想要的东西。
默认拨号应用程序
Intent mainIntent = new Intent(Intent.ACTION_DIAL, null);
mainIntent.addCategory(Intent.CATEGORY_DEFAULT);
List<ResolveInfo> pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0);
ActivityInfo info = pkgAppsList.get(0).activityInfo;
默认短信应用程序
String smsPkgName = Telephony.Sms.getDefaultSmsPackage(context);
ApplicationInfo info = getPackageManager().getApplicationInfo(smsPkgName, 0);
默认浏览器应用程序
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"));
ResolveInfo resolveInfo = getPackageManager().resolveActivity(browserIntent,
PackageManager.MATCH_DEFAULT_ONLY);
ActivityInfo info = resolveInfo.activityInfo;