如何在 android 中获取默认短信、图库、通话、联系人和浏览器应用程序和包名称?
How to get default sms,gallery,call,contacts and browser app and package name in android?
我正在为 android(Launcher) 创建一个家庭替代应用程序,我想将短信、电话、联系人、图库和浏览器应用程序放在主屏幕中。我怎么知道他们的包裹名称。
如果用户使用自定义联系人应用程序作为默认应用程序,我需要获取该应用程序的包名称而不是 android 联系人应用程序。
我怎样才能做到这一点?谢谢。
您可以尝试为特定 Intent
获取默认启动 activity,例如,对于 SMS,您使用 sms:
-URI 执行 Intent
,然后从在那里检查 'default'-Activity 它的启动,在获取它的包名称和其他详细信息的过程中。
Get Preferred/Default app on Android
您可以使用此代码获取 Intent
那些东西。有问题的是 SMS
一个。
对于短信:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(ctx);
Intent lunchIntent;
if (defaultSmsPackageName != null) {
launchIntent = pm.getLaunchIntentForPackage(defaultSmsPackageName);
} else {
String SMS_MIME_TYPE = "vnd.android-dir/mms-sms";
launchIntent = new Intent(Intent.ACTION_MAIN);
launchIntent.setType(SMS_MIME_TYPE);
}
} else {
String SMS_MIME_TYPE = "vnd.android-dir/mms-sms";
launchIntent = new Intent(Intent.ACTION_MAIN);
launchIntent.setType(SMS_MIME_TYPE);
}
来电:
Intent intent = new Intent(Intent.ACTION_DIAL);
对于浏览器:
Intent intent;
Intent queryIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.google.com"));
ActivityInfo af = queryIntent.resolveActivityInfo(pm, 0);
intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName(af.packageName, af.name);
照片:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://media/internal/images/media"));
try {
context.startActivity(intent);
} catch (ActivityNotFoundException eee){
try {
intent = new Intent(Intent.ACTION_VIEW);
intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
} catch (Exception err){
Toast.makeText(context, "This app not supported in your device", Toast.LENGTH_LONG).show();
}
}
我正在为 android(Launcher) 创建一个家庭替代应用程序,我想将短信、电话、联系人、图库和浏览器应用程序放在主屏幕中。我怎么知道他们的包裹名称。
如果用户使用自定义联系人应用程序作为默认应用程序,我需要获取该应用程序的包名称而不是 android 联系人应用程序。
我怎样才能做到这一点?谢谢。
您可以尝试为特定 Intent
获取默认启动 activity,例如,对于 SMS,您使用 sms:
-URI 执行 Intent
,然后从在那里检查 'default'-Activity 它的启动,在获取它的包名称和其他详细信息的过程中。
Get Preferred/Default app on Android
您可以使用此代码获取 Intent
那些东西。有问题的是 SMS
一个。
对于短信:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(ctx);
Intent lunchIntent;
if (defaultSmsPackageName != null) {
launchIntent = pm.getLaunchIntentForPackage(defaultSmsPackageName);
} else {
String SMS_MIME_TYPE = "vnd.android-dir/mms-sms";
launchIntent = new Intent(Intent.ACTION_MAIN);
launchIntent.setType(SMS_MIME_TYPE);
}
} else {
String SMS_MIME_TYPE = "vnd.android-dir/mms-sms";
launchIntent = new Intent(Intent.ACTION_MAIN);
launchIntent.setType(SMS_MIME_TYPE);
}
来电:
Intent intent = new Intent(Intent.ACTION_DIAL);
对于浏览器:
Intent intent;
Intent queryIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.google.com"));
ActivityInfo af = queryIntent.resolveActivityInfo(pm, 0);
intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName(af.packageName, af.name);
照片:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://media/internal/images/media"));
try {
context.startActivity(intent);
} catch (ActivityNotFoundException eee){
try {
intent = new Intent(Intent.ACTION_VIEW);
intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
} catch (Exception err){
Toast.makeText(context, "This app not supported in your device", Toast.LENGTH_LONG).show();
}
}