在三星Galaxy S5上用短信分享文字

时间:2015-07-17 12:51:38

标签: android

我正在尝试通过短信分享文字。它在大多数手机上看起来都很好,甚至是三星手机,除了Galaxy S5。

以下是代码:

public static void shareWithSMS(@NonNull Context context, @Nullable String text) {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "", null));
    intent.setType("vnd.android-dir/mms-sms");
    intent.putExtra("sms_body", text);
    context.startActivity(intent);
}

它启动了短信应用,没有任何文字。 有谁知道为什么?

更新

目的是启动设备的短信应用程序,而不是发送短信。这就是我没有使用SmsManager的原因。

2 个答案:

答案 0 :(得分:0)

您有两种方法可以执行此操作。其中一种方法正在使用smsManager(),另一种方法正在使用Intent 因此,请使用此代码发送消息:

    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
            smsIntent.setType("vnd.android-dir/mms-sms");
            smsIntent.putExtra("sms_body", getString(R.string.social_invitation));
            startActivity(smsIntent);

享受您的密码:)

答案 1 :(得分:0)

我遇到了同样的麻烦。我在这里找到了解决方案launch sms application with an intent

如果Android版本是Kitkat或更高版本,用户可以更改默认的短信应用程序。此方法将获取默认的短信应用程序并启动默认的短信应用程序。

private void sendSMS() {    
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat
      {
         String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); // Need to change the build to API 19

         Intent sendIntent = new Intent(Intent.ACTION_SEND);
         sendIntent.setType("text/plain");
         sendIntent.putExtra(Intent.EXTRA_TEXT, "text");

         if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose
         // any app that support this intent.
         {
            sendIntent.setPackage(defaultSmsPackageName);
         }
         startActivity(sendIntent);

      }
      else // For early versions, do what worked for you before.
      {
         Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
         smsIntent.setType("vnd.android-dir/mms-sms");
         smsIntent.putExtra("address","phoneNumber");         
         smsIntent.putExtra("sms_body","message");
         startActivity(smsIntent);
      }
   }