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

时间:2018-03-09 20:03:08

标签: android sms android-8.0-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);

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

  

无法找到显式活动类   {com.android.mms / com.android.mms.ui.ConversationList};有你   在AndroidManifest.xml中声明了这个活动?

现在有了Oreo,我认为,用户可以选择默认的消息传递应用程序。那么,有没有办法通过代码得到哪个应用程序? 然后我只需要这样做:

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

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

1 个答案:

答案 0 :(得分:0)

  

我将此代码用于旧版本

该代码与“打开默认的SMS应用程序”无关。这会尝试在特定应用(com.android.mms.ui.ConversationList)中启动特定活动(com.android.mms)。值得注意的是:

  • 设备无需拥有该应用
  • 该应用无需在该应用的所有版本中拥有该活动
  • 不要求用户将此设置为默认的SMS客户端
  • 用户不要求使用此SMS客户端,即使它不是默认的
Android 4.4+上的

Call Telephony.Sms.getDefaultSmsPackage(),了解用户选择的默认短信客户端。