如何在Android中获取默认的短信,图库,通话,联系人和浏览器应用程序和包名称?

时间:2015-09-07 02:02:42

标签: android android-intent android-activity homescreen

我正在为Android(Launcher)创建一个家庭替代应用程序,我想在主屏幕中放置短信,电话,联系人,图库和浏览器应用程序。我怎么知道它们的包名。

如果用户使用自定义联系人应用程序作为默认应用程序,我需要获取该程序包的名称,而不是Android联系人应用程序。

我怎样才能做到这一点?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试获取特定Intent的默认启动活动,例如,对于您使用Intent - URI执行sms:的短信,然后检查“默认” - 在获取包名和其他细节的方式上,启动它的启动。

Get Preferred/Default app on Android

答案 1 :(得分:1)

您可以使用此代码获取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();
                    }
                }