我创建了一个默认拨号器应用,但 ACTION_CALL Intent 在某些设备上不起作用。
除非我将我的应用程序设置为默认手机应用程序,否则 ACTION_CALL Intent 效果很好。但是,如果我的应用程序被设置为默认手机应用程序,它将无法工作。
我认为我的应用程序有问题。不过,它在除三星 Galaxy S10E 之外的大多数设备上都能正常工作(在其他 Android 9.0 设备上也能正常工作)。
如果我将我的应用设置为默认拨号器应用并发送 ACTION_CALL Intent ,则会出现一个屏幕,我可以在其中选择除我的应用之外的电话应用(使用完整操作)
设备没有问题。下面链接中的应用程序运行良好。( https://play.google.com/store/apps/details?id=com.skt.prod.dialer )
请帮助我。
/* call method */
void doCall(String phoneNo) {
String tel = "tel:" + phoneNo;
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse(tel));
this.startActivity(callIntent);
}
/* InCallService */
<service
android:name=".CallService"
android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data
android:name="android.telecom.IN_CALL_SERVICE_UI"
android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService" />
</intent-filter>
</service>
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
最佳答案
我最好建议在构造 Intent 调用特定号码时使用 ACTION_DIAL 而不是 ACTION_CALL。使用 ACTION_DIAL,您在应用程序中不需要调用权限,因为 ACTION_DIAL 将使用已输入的号码打开拨号器,并进一步允许用户决定是否实际调用电话或在调用之前修改电话号码或根本不调用。并检查 list 权限。
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + "Your Phone_number"));// Initiates the Intent
startActivity(intent);
关于java - 我创建了一个默认拨号器应用程序,但 ACTION_CALL Intent 在某些设备上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57455941/