Irf*_*ram 2 android android-intent telephonymanager android-permissions android-10.0
我目前无法让我的应用程序向用户发送对话以在 API 29 上设置默认拨号器,但相同的代码在 Android 10 (Q) 下运行良好。
我测试了这个“无响应”意图提示用户设置短信示例的默认处理程序,但不适用于我的。然后我按照https://developer.android.com/guide/topics/permissions/default-handlers但没有解决我的问题。API 级别 29 或更高版本是否有任何特殊更改可以让用户设置默认应用程序?
这是我的工作代码(适用于 Android 10 以下)
TelecomManager telecomManager = (TelecomManager) getSystemService(TELECOM_SERVICE);
if (!getPackageName().equals(telecomManager.getDefaultDialerPackage())) {
Intent intent = new Intent(ACTION_CHANGE_DEFAULT_DIALER)
.putExtra(EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName());
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
我在 logcat 中得到的内容在这里
是的,API 已更改,请参阅此处之前 API 中的注释: https: //developer.android.com/reference/android/telecom/TelecomManager#ACTION_CHANGE_DEFAULT_DIALER
请参阅此处了解新 API: https ://developer.android.com/reference/android/app/role/RoleManager
基本上,你需要做类似的事情:
RoleManager roleManager = (RoleManager) getSystemService(Context.ROLE_SERVICE);
Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_DIALER);
startActivityForResult(Intent, CHANGE_DEFAULT_DIALER_CODE); // you need to define CHANGE_DEFAULT_DIALER as a static final int
Run Code Online (Sandbox Code Playgroud)
然后你通过在你的活动中实施来捕捉响应onActivityResult。
| 归档时间: |
|
| 查看次数: |
2997 次 |
| 最近记录: |