我想改变Android的默认拨号程序,并想使我自己的自定义拨号程序。为此,我选择了这个GIthub repo作为启动项目。这在所有其他手机上都工作得很好,但在华为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()
}
StertActivityforResult
返回RESULT_CANCELED
和消息
User declined request to become default dialer
找不到任何解决方案。任何帮助都将不胜感激。
发布于 2020-10-02 04:22:12
如果您在Android Q
或更高版本中运行此代码,它将无法工作。这对于下面的Q
来说是很好的。要让它在Android Q
中工作,请尝试下面的代码:
RoleManager rm = (RoleManager) getSystemService(Context.ROLE_SERVICE);
startActivityForResult(rm.createRequestRoleIntent(RoleManager.ROLE_DIALER), 120);
它将弹出应用程序选择器对话框。
发布于 2020-05-29 12:00:01
当目标是Android Q或更高版本时,你也会得到一个RESULT_CANCELED,因为PermissionPolicyService会移除这个动作。您应该改用RoleManager.createRequestRoleIntent()。
发布于 2019-04-16 20:33:47
尝试在AndroidManifest中为您的活动添加一些意图过滤器。
<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>
https://stackoverflow.com/questions/55612361
复制