首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android 10默认短信应用程序对话框不显示

Android 10默认短信应用程序对话框不显示
EN

Stack Overflow用户
提问于 2020-01-02 02:02:32
回答 1查看 1.4K关注 0票数 5

我已经成功地将我的应用程序修改为默认的短信应用程序。问题出在提示用户将我的应用程序设置为默认应用程序的对话框。它似乎可以在老版本上运行,但不能在Android10模拟器上运行。

我的代码:

代码语言:javascript
复制
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响应,表明权限已被授予,但是如果我调用:

代码语言:javascript
复制
Telephony.Sms.getDefaultSmsPackage(this)

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

会出什么问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-24 16:41:42

对于Android10,我们使用RollManger

代码语言:javascript
复制
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);
}



}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59554835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档