在 Android Oreo 中打开默认短信应用

Open default SMS app in Android Oreo

我无法打开 Android Oreo 中的默认短信应用程序。 我将此代码用于旧版本:

   Intent oIntent = new Intent(Intent.ACTION_MAIN);
   oIntent.addCategory(Intent.CATEGORY_DEFAULT);
   oIntent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
   startActivityForResult(oIntent, 12345);

它一直运行良好。但是对于奥利奥,我收到了这个错误:

Unable to find explicit activity class {com.android.mms/com.android.mms.ui.ConversationList}; have you declared this activity in your AndroidManifest.xml?

现在有了 Oreo,我想,用户可以 select 默认的消息传递应用程序。那么,有没有办法通过代码获取哪个应用程序? 那么我只需要这样做:

String sPackageManager = GetDefaultMessagingApp(); <-- This is what I need

Intent oIntent = getPackageManager().getLaunchIntentForPackage(sPackageManager);
startActivity(oIntent);

I used this code for older releases

该代码与 "open[ing] the default SMS app" 无关。这会尝试在特定应用程序 (com.android.mms) 中启动特定 activity (com.android.mms.ui.ConversationList)。值得注意的是:

  • 设备不需要安装该应用程序
  • 该应用程序的所有版本都不需要 activity,
  • 不要求用户将此设置为他们的默认 SMS 客户端
  • 没有要求用户要使用此 SMS 客户端,即使它不是默认设置

Call Telephony.Sms.getDefaultSmsPackage() 在 Android 4.4+ 上找出用户选择的默认 SMS 客户端。