Gav*_*ght 2 android android-intent
当以 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我发现我可以通过添加此权限来解决此问题:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
Run Code Online (Sandbox Code Playgroud)
...但是我可以使用更具体的查询来发送短信吗?
我想到了。我需要将其添加到我的清单中:
<queries>
<intent>
<action android:name="android.intent.action.SENDTO" />
<data android:scheme="smsto"/>
</intent>
</queries>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3078 次 |
| 最近记录: |