Позвонить на Android 10 - PullRequest
       9

Позвонить на Android 10

3 голосов
/ 06 января 2020

Я сделал приложение, которое автоматически делает звонок, если в SMS поступает предварительно настроенный код.

Я изначально создавал это приложение на Android 9, и оно работало хорошо, пока я использую Android 9, но мой телефон обновился до 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 version?

* ПРИМЕЧАНИЕ. Я также пытался обновить код для использования библиотеки androidx, изменив для использования targetSdkVersion 29, но все так же.

1 Ответ

2 голосов
/ 07 января 2020

Android 10 ограничено началом деятельности из фона. Есть некоторые исключения для этого. На мой взгляд, запрос на разрешение «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
            }

        }
    }
...