android - Intent 发送短信不再适用于 Android 11

标签 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);
            }
        }
    }

编辑:我发现我可以通过添加此权限来解决此问题:

<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/

相关文章:

java - getActionbar() 的空指针异常

android - 从 Fragment 开始一个 Activity

android - 是否可以在 android 中注册长按链接的 Intent ?

android - 搜索 Intent 不起作用

android - 无法从类型中对非静态方法 getSystemService(String) 进行静态引用

android - 使用新的 Android Analytics 捕获字符串

java - 一项全程运行的 Activity

android - Fragment setRetainInstance(true) 保存View属性

android - 波斯语字符未显示在 Android 应用程序中

android - 未能将 Intent 结果传递回 Activity ,android 图像捕获 Intent