最高包括 Android 9,我的应用程序可以在没有人工干预的情况下拨打号码。
随着 Android 10 的更新,调用是在用户存在应用程序后进行的。
这是进行调用的函数:
/**
* Call the given number if no other call is busy.
*
* @param number Number to call
*/
private void callNumber(String number) {
if(!Utils.isCallActive()) {
// ACTION_CALL: Direct call
this.startIntent(new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number)));
}
}
向用户请求相关权限并启用:
<uses-permission android:name="android.permission.CALL_PHONE" />
开发人员文档不建议做任何其他事情: https ://developer.android.com/guide/components/intents-common#DialPhone
在此之前,应用程序已在活动中被置于最前面(传入的推送会唤醒触发此行为的应用程序)。
我想知道这是否会产生影响:
orgFlags=window.getAttributes().flags;
window.addFlags(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
);
对于处理拨出呼叫的应用程序, ACTION_NEW_OUTGOING_CALL 已被弃用,但我看不出这会如何影响请求呼叫的应用程序。
我将测试当前活动的呼叫完成是否有帮助。
最后的问题是: 在Android 10中,如何保证应用可以触发直接呼出而无需人工交互?