Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TelecomManager.ACTION\u CHANGE\u DEFAULT\u拨号程序返回结果\u在华为P8 Lite上取消_Android_Kotlin_Default_Android Dialer - Fatal编程技术网

Android TelecomManager.ACTION\u CHANGE\u DEFAULT\u拨号程序返回结果\u在华为P8 Lite上取消

Android TelecomManager.ACTION\u CHANGE\u DEFAULT\u拨号程序返回结果\u在华为P8 Lite上取消,android,kotlin,default,android-dialer,Android,Kotlin,Default,Android Dialer,我想更改Android默认拨号程序,并想制作自己的自定义拨号程序。为此,我选择了这个作为启动项目。这在所有其他手机上都能很好地工作,在华为p8 lite上不再工作。将应用程序设置为默认应用程序时,不会显示默认弹出消息。 这是代码块 private fun checkDefaultDialer(){ if(Build.VERSION.SDK_INT“用户接受成为默认拨号程序的请求” 结果\u取消->“用户拒绝成为默认拨号程序的请求” else->“意外结果代码$resultCode” } Toas

我想更改Android默认拨号程序,并想制作自己的自定义拨号程序。为此,我选择了这个作为启动项目。这在所有其他手机上都能很好地工作,在华为p8 lite上不再工作。将应用程序设置为默认应用程序时,不会显示默认弹出消息。 这是代码块

private fun checkDefaultDialer(){
if(Build.VERSION.SDK_INT“用户接受成为默认拨号程序的请求”
结果\u取消->“用户拒绝成为默认拨号程序的请求”
else->“意外结果代码$resultCode”
}
Toast.makeText(this,message,Toast.LENGTH\u SHORT).show()
}
StertActivityforResult
返回
RESULT\u cancelled
和消息

User declined request to become default dialer

找不到任何解决方案。任何帮助都将不胜感激。

尝试在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>


当您以Android Q或更高版本为目标时,由于PermissionPolicyService删除了该操作,您还将得到一个取消的结果。您应该改用RoleManager.CreateRequestRoleContent()。

如果您在Android Q或更高版本中运行此代码,它将无法工作。这对于下面的
Q
来说很好。要使其在Android Q中工作,请尝试以下代码:

RoleManager rm = (RoleManager) getSystemService(Context.ROLE_SERVICE);
startActivityForResult(rm.createRequestRoleIntent(RoleManager.ROLE_DIALER), 120);
它将弹出应用程序选择器对话框。

我的方式:

@SuppressLint(“querypermissionsneed”)
@TargetApi(Build.VERSION\u CODES.M)
fun LaunchSetDefaultDialerEvent(活动:AppCompativeActivity){
意图(TelecomManager.ACTION\u CHANGE\u DEFAULT\u DIALER)。putExtra(
TelecomManager.EXTRA\u CHANGE\u DEFAULT\u DIALER\u PACKAGE\u NAME,
activity.packageName
).申请{
if(resolveActivity(activity.packageManager)!=null){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.Q){
val rm:RoleManager?=activity.getSystemService(RoleManager::class.java)
如果(rm?.isRoleAvailable(RoleManager.ROLE\u拨号程序)=真){
@压制(“反对”)
activity.startActivityForResult(
rm.CreateRequestRoleContent(RoleManager.ROLE_拨号程序),
请求\代码\设置\默认\拨号器
)
}
}否则{
@压制(“反对”)
activity.startActivityForResult(此,请求\代码\设置\默认\拨号程序)
}
}否则{
activity.toastShort(R.string.未找到联系人)
}
}
}
然后直接在活动中使用它