我已经成功地将我的应用程序修改为默认的短信应用程序。问题出在提示用户将我的应用程序设置为默认应用程序的对话框。它似乎可以在老版本上运行,但不能在Android10模拟器上运行。
我的代码:
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)我仍然认为谷歌短信应用是默认的。
会出什么问题呢?
发布于 2020-02-24 16:41:42
对于Android10,我们使用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);
}
}https://stackoverflow.com/questions/59554835
复制相似问题