拨打 Android 10

Make a call on Android 10

我制作了一个应用程序,如果预先配置的代码以短信形式到达,它会自动拨打电话。

我最初在 Android 9 上构建这个应用程序,只要我使用 Android 9,它就运行良好,但我的 phone 升级到 Android 10版本,它刚刚停止工作。

分析日志并调试应用程序,没有出现任何错误消息。调试一切正常,我称活动如下:

Intent in = new Intent(Intent.ACTION_CALL);
in.setData(Uri.parse(callPhone));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);

但是没有任何反应。它只是不打电话。我在使用其他版本 android 的其他设备上安装并且仍然有效,但在 Android 10.

中无效

有人知道是否实施了一些不同的东西,或者是否有一种新的方法来调用 Android 10 版本?

*注意:我还尝试更新代码以使用 androidx 库,因为更改为使用 targetSdkVersion 29,但仍然相同。

Android 10 仅限从后台开始 activity。这有一些例外情况。在我看来,请求 "SYSTEM_ALERT_WINDOW" 许可是最简单的方法。希望对你有帮助。

https://developer.android.com/guide/components/activities/background-starts

清单中:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

代码中的某处

private void RequestPermission() {
            // Check if Android M or higher
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                // Show alert dialog to the user saying a separate permission is needed
                // Launch the settings activity if the user prefers
                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                        Uri.parse("package:" + getActivity().getPackageName()));
                startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
            }
        }

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (!Settings.canDrawOverlays(getContext())) {
                    PermissionDenied();
                }
                else
                {
                 //Permission Granted-System will work
            }

        }
    }