Android 10 默认短信应用对话框未显示

标签 android android-10.0

我已成功修改我的应用程序以用作默认短信应用程序。
问题在于应该提示用户将我的应用程序设置为默认值的对话框。
它似乎适用于旧版本,但不适用于 android 10 模拟器。

我的代码:

fun Activity.askToBeDefaultSMSApp() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
        intent.putExtra(
            Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
            packageName
        )
        startActivityForResult(intent, DEFAULT_SMS_APP_PERMISSION_REQUEST)
    }
}

我确实得到了 onActivityResult 响应,它说已授予权限,但是如果我打电话:
Telephony.Sms.getDefaultSmsPackage(this)

我仍然认为谷歌短信应用是默认的。

有什么问题?

最佳答案

对于 android 10,我们使用 RollManger

if (getDefaultSmsPackage(mContext) != null && !getDefaultSmsPackage(mContext).equals(mContext.getPackageName())) {
    RoleManager roleManager = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        roleManager = mContext.getSystemService(RoleManager.class);

        if (roleManager.isRoleAvailable(RoleManager.ROLE_SMS)) {
            if (roleManager.isRoleHeld(RoleManager.ROLE_SMS)) {
                Log.d("role", "role");
            } else {
                Intent roleRequestIntent = roleManager . createRequestRoleIntent (
                        RoleManager.ROLE_SMS);
                ((Activity) mContext).startActivityForResult(roleRequestIntent, MESSAGE_CODE);
            }
        }
    } else {
        Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
        intent.putExtra(
            Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
            mContext.getPackageName()
        );
        ((Activity) mContext).startActivityForResult(intent, MESSAGE_CODE);
    }
}

关于Android 10 默认短信应用对话框未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59554835/

相关文章:

android - 如何以正确的方式将 Activity 添加到 manifest.xml?

android - 错误膨胀类 android.webkit.WebView 在生产中偶尔发生

android - WifiP2pManager.discoverPeers 在 android 10 中失败

java - 是否有包含图标和文本的内部布局?

android - 如何动态更改jquery mobile中的固定 header

android - 没有google账号怎么安装条码扫描库?

android - 在 Android 10 上使用 RNFetchBlob 的下载管理器 React Native 下载文件

android - 如何知道 Android Q 中的应用程序已暂停?

android - 当 Android Q 中的 minifyEnabled = true 时,具有数据绑定(bind)的 LiveData 不起作用

android - 针对 SDK Android Q 导致无法完成 session : INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2