您好,我正在努力将我的应用程序兼容性更新为 android 10 和 11,之前我将我的应用程序设置为默认短信应用程序并从我的应用程序接收和发送新短信,更改默认短信应用程序的意图在 android 10 以下工作正常,但其未显示更改 Android 10 上弹出的默认短信应用程序
val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
startActivity(intent)
如果有人知道 android 10 发生了什么变化,请提出建议,因为我无法在developer.android.com 上找到任何更改,提前致谢
仔细阅读文档后,我发现他们已经更新了直接意图,
RoleManager
,
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
val roleManager = getSystemService(RoleManager::class.java)
val roleRequestIntent = roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS)
startActivityForResult(roleRequestIntent, 12)
} else {
val intent = Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT)
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, packageName)
startActivity(intent)
}
这是更新所有所需访问权限的新方法 以供参考 :- https://developer.android.com/reference/android/app/role/RoleManager
如果您的应用程序未在 Android 中列为短信应用程序,则它将无法打开更改默认短信应用程序的意图。要被识别为默认短信应用程序的候选者,请声明 ACTION_CHANGE_DEFAULT 操作的意图过滤器,以表明您的应用程序能够处理短信:
<activity android:name=".YourMainActivity">
<!-- Other activity attributes -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.provider.Telephony.ACTION_CHANGE_DEFAULT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
确保您的应用具有 AndroidManifest.xml 文件中声明的必要权限。为了处理 SMS,您通常需要 SEND_SMS、RECEIVE_SMS 和 READ_SMS 等权限。