【问题标题】:How to get default sms,gallery,call,contacts and browser app and package name in android?如何在 android 中获取默认的短信、图库、通话、联系人和浏览器应用程序和包名称?
【发布时间】:2015-09-07 02:02:41
【问题描述】:

我正在为 android(启动器)创建一个家庭替换应用程序,我想将短信、通话、联系人、图库和浏览器应用程序放在主屏幕中。我怎么知道他们的包名。

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

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

【问题讨论】:

    标签: android android-intent android-activity homescreen


    【解决方案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();
                        }
                    }
    

    【讨论】:

    • 谢谢,但我将如何从中获取默认应用名称、图像 uri 和包名称?我会通过使用 PackageManager 得到它吗 pm = context.getPackageManager(); final ResolveInfo mInfo = pm.resolveActivity(intent, 0);
    • @yshahak:语音应用怎么样。让我在stackoverflow.com/questions/40500143/… 看到我的问题
    【解决方案2】:

    您可以尝试获取特定 Intent 的默认启动活动,例如,对于 SMS,您使用 sms:-URI 执行 Intent,然后从那里检查“默认”-Activity 它的启动,开启获取其包名称和其他详细信息的方式。

    Get Preferred/Default app on Android

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-09
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多