You*_*ash 4 android default kotlin android-dialer
我想更改 Android 默认拨号器并想制作我自己的自定义拨号器。为此,我选择了这个 GIthub 存储库作为启动项目。这在所有其他手机上运行良好,在 huawei p8 lite 上停止运行。默认弹出消息不会显示将应用程序设置为默认值。这是代码块
private fun checkDefaultDialer() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return
val telecomManager = getSystemService(TELECOM_SERVICE) as TelecomManager
val isAlreadyDefaultDialer = packageName == telecomManager.defaultDialerPackage
if (isAlreadyDefaultDialer) return
val intent = Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER).putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, packageName)
startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER)
}
private fun checkSetDefaultDialerResult(resultCode: Int) {
val message = when (resultCode) {
RESULT_OK -> "User accepted request to become default dialer"
RESULT_CANCELED -> "User declined request to become default dialer"
else -> "Unexpected result code $resultCode"
}
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
Run Code Online (Sandbox Code Playgroud)
StertActivityforResult返回RESULT_CANCELED和消息
User declined request to become default dialer
Run Code Online (Sandbox Code Playgroud)
找不到任何解决方案。任何帮助将不胜感激。
如果您在Android Q上面或上面运行此代码,它将不起作用。它在下面就好了Q。要使其正常工作,请Android Q尝试以下代码:
RoleManager rm = (RoleManager) getSystemService(Context.ROLE_SERVICE);
startActivityForResult(rm.createRequestRoleIntent(RoleManager.ROLE_DIALER), 120);
Run Code Online (Sandbox Code Playgroud)
它将弹出应用程序选择器对话框。
小智 3
尝试在 AndroidManifest.xml 中的 Activity 中添加一些 Intent 过滤器。
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:name="android.intent.action.DIAL"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="tel"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.DIAL"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |