将我的应用程序设置为默认拨号器而不询问 Android 10 (Q) 中的选项?

Set my app as the default Dialler not asking options in Android 10 (Q)?

我目前无法让我的应用程序向用户发送对话以在 API 29 上设置默认拨号器,但相同的代码在 Android 10 (Q) 以下工作正常。

我测试了这个 example as well but not working on mine. Then I followed https://developer.android.com/guide/topics/permissions/default-handlers 但没有解决我的问题。 API 29 级或以上是否有任何特殊更改让用户设置默认应用程序?

Here's my working code (for below 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);
        }

What I'm getting in logcat is here

是的,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

然后通过在 activity.

中实现 onActivityResult 来捕获响应