如何通过隐式意图打开短信应用程序?

时间:2016-05-09 09:17:32

标签: android android-intent

我遵循以下代码:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    intent.setType("vnd.android-dir/mms-sms");
    startActivity(intent);

它适用于Android 5.1,但不适用于android 6.0,因为android.content.ActivityNotFoundException: No Activity found to handle Intent。那么,如何通过隐式意图打开短信应用?

编辑:

  1. 你看了我的帖子?我需要打开应用程序,而不是发送消息。

  2. 我检查https://www.instagram.com/developer/sandbox/帖子,但它不起作用!

10 个答案:

答案 0 :(得分:6)

你可以试试这个,它对我有用:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_MESSAGING);
startActivity(intent);

答案 1 :(得分:2)

使用此:

public void composeSmsMessage(String message, String phoneNumber) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setData(Uri.parse("smsto:"+phoneNumber)); // This ensures only SMS apps respond
    intent.putExtra("sms_body", message);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

Official Docmentation

答案 2 :(得分:2)

试试这个: -

try {

     Intent intent = new Intent(Intent.ACTION_VIEW);     
     intent.putExtra("sms_body", message);    
     intent.setData(Uri.parse("sms:"));
     startActivity(intent);
} catch (android.content.ActivityNotFoundException anfe) {
    Log.d("Error" , "Error");
}

答案 3 :(得分:2)

下面的代码非常适合我,希望对您有所帮助

如果您想返回应用程序,此代码也可以使用

Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setData(Uri.parse("smsto:" + phoneNumber)); // This ensures only SMS apps respond
        intent.putExtra("sms_body", "Hey downaload Whozhere app");
        startActivity(intent);

答案 4 :(得分:1)

试试这个:

Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", "12125551212");
smsIntent.putExtra("sms_body","Body of Message");
startActivity(smsIntent);

答案 5 :(得分:0)

您也可以使用

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + Uri.encode(phoneNumber)));
startActivity(intent);

答案 6 :(得分:0)

您可以使用清单文件中的意图过滤器

进行深层链接

答案 7 :(得分:0)

Intent intent = new Intent(Intent.ACTION_SENDTO);

intent.setData(Uri.parse(" smsto:" + Uri.encode(phoneNumber))); startActivity(意向);

答案 8 :(得分:0)

官方文档tsne reference page

public void composeMmsMessage(String message, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setType(HTTP.PLAIN_TEXT_TYPE);
    intent.putExtra("sms_body", message);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

答案 9 :(得分:0)

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);

正在工作