当以 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" />
...但是我可以使用更具体的查询来发送短信吗?
我想到了。我需要将其添加到我的清单中:
<queries>
<intent>
<action android:name="android.intent.action.SENDTO" />
<data android:scheme="smsto"/>
</intent>
</queries>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)