我正在尝试通过短信分享文字。它在大多数手机上看起来都很好,甚至是三星手机,除了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
的原因。
答案 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);
}
}