当以 Android 11 为目标并使用 Android 11 设备(物理设备或模拟器)时,以下方法不再适用于发送短信。更改目标 SDK 版本或设备 SDK 版本使其工作。 logcat 什么也没说。知道为什么它不起作用吗?
private void sendTextMessage() {
Intent intent = new Intent(Intent.ACTION_SENDTO);
String phoneNumber = prefs.getString(KEY_USER_SELECTED_PHONE_NUMBER, getString(R.string.enter_phone_number_default_text));
intent.setData(Uri.parse("smsto:" + phoneNumber)); // This ensures only SMS apps respond
intent.putExtra("sms_body", fetchTextMessageString());
if (intent.resolveActivity(getPackageManager()) != null) {
try {
startActivity(intent);
} catch (ActivityNotFoundException anfe) {
Utilities.showLogError(LOG_TAG, anfe, "Couldn't find SMS activity");
showSnackbar(MainActivity.this, null, 4500, true, new SpannableString("No SMS app installed on your device"), false, "DISMISS", null);
}
}
}
编辑:我发现我可以通过添加此权限来解决此问题:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
...但是是否有更具体的查询可用于发送短信?
最佳答案
我想通了。我需要将其添加到我的 list 中:
<queries>
<intent>
<action android:name="android.intent.action.SENDTO" />
<data android:scheme="smsto"/>
</intent>
</queries>
关于android - Intent 发送短信不再适用于 Android 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64647782/