Google Play SMS и доступ к звонкам - PullRequest
0 голосов
/ 20 декабря 2018

Я относительно новичок в Android, поэтому любая помощь будет принята с благодарностью.Я написал простое приложение каталога, чтобы перечислить контакты нашей организации.Выбрав контакт, вы можете нажать одну из двух кнопок: Позвонить или Текст.При нажатии кнопки вызова он инициирует телефонный звонок этому человеку, а когда при нажатии кнопки «Текст» - SMS-сообщение, адресованное этому человеку.Вот мой код:

private void makePhoneCall() {

        if (ContextCompat.checkSelfPermission(EntryDetailActivity.this,
                Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(EntryDetailActivity.this,
                    new String[] {Manifest.permission.CALL_PHONE}, REQUEST_CALL);

        } else {
            String dial = "tel:" + currentPhoneNumber;
            startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(dial)));
        }

    }

    private void sendSMS() {

        if (ContextCompat.checkSelfPermission(EntryDetailActivity.this,
                Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(EntryDetailActivity.this,
                    new String[] {Manifest.permission.SEND_SMS}, REQUEST_SMS);

        } else {
            String dial = "sms:" + currentPhoneNumber;
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(dial)));
        }

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == REQUEST_CALL) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                makePhoneCall();
            } else {
                Toast.makeText(this, "Please grant permission to make call!", Toast.LENGTH_SHORT).show();
            }
        }

        if (requestCode == REQUEST_SMS) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                sendSMS();
            } else {
                Toast.makeText(this, "Please grant permission to send text messages!", Toast.LENGTH_SHORT).show();
            }
        }
    }

А вот что у меня есть в файле AndroidManifest.xml:

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

После отправки в магазин Google Play я получаю уведомление по электронной почте от Google, заявляющее:

Требуется действие

Ознакомьтесь с политикой разрешений и статьей справочного центра Play Console, в которой описываются предполагаемое использование, исключения, недопустимое использование и альтернативные варианты использования разрешений журнала вызовов или SMS., чтобы определить, какой из следующих параметров применим к вашему уязвимому приложению:

Вариант 1) Ваше приложение не требует доступа к разрешениям журнала вызовов или SMS: удалите указанные разрешения из манифеста вашего приложения или перенеситек альтернативному внедрению к 9 января 2019 года. Если вам требуется дополнительное время для удаления разрешений или перехода на альтернативный вариант, отправьте форму декларации разрешений, чтобы запросить продление до 9 марта 2019 года.

Вариант 2) Вашприложение является обработчиком по умолчанию, или вы считаете, что ваше приложение соответствует требованиямили исключение: если вы еще этого не сделали, отправьте запрос с помощью формы декларации о разрешениях до 9 января 2019 года. В настоящее время мы рассматриваем представленные материалы и ответим на ваш запрос.Примечание. Вам не нужно вносить изменения в свое приложение, чтобы иметь право подать запрос.Убедитесь, что ваше приложение в остальном совместимо со всеми другими политиками программ для разработчиков, чтобы предотвратить его удаление.

Мы ценим вашу постоянную поддержку, чтобы сделать Google Play положительным опытом как для разработчиков, так и для наших пользователей.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Что я делаю не так?

Прямо сейчас вы:

  • Выполнение телефонных звонков с использованием ACTION_CALL и
  • Попытка запустить клиент SMS с использованием ACTION_VIEW из sms: Uri

Использование Intent для запуска клиента SMS не требует разрешения SEND_SMS.Это разрешение необходимо, если вы использовали SmsManager для прямой отправки SMS.Таким образом, вы можете удалить разрешение SEND_SMS из манифеста и кода, чтобы очистить его.

Вам необходимо разрешение CALL_PHONE, чтобы использовать ACTION_CALL для прямого телефонного звонка.Если вы хотите использовать ACTION_DIAL, вы можете избавиться от разрешения CALL_PHONE.Плата за то, что ACTION_DIAL просто вызывает номеронабиратель на желаемом номере телефона, заставляя пользователя нажать кнопку, чтобы сделать звонок.Я предполагаю, что это разумный компромисс здесь, так как ваш код SMS на самом деле не отправляет SMS, а вызывает приложение, которое может отправить SMS.Использование ACTION_DIAL приведет к параллелизму ваших действий и позволит вам устранить оба разрешения.

0 голосов
/ 20 декабря 2018

Google пометил CALL_PHONE, SEND_SMS и т. Д. Как конфиденциальное разрешение.Поскольку они содержат персональные данные, никто не может злоупотреблять этими данными, если они не контролируются должным образом, или звонить / отправлять сообщение на любой подозрительный номер.

То, что они пытаются сделать, это те приложения, которые не являютсяв первую очередь зависит от этих разрешений, таких как обычное приложение, которому требуется проверка смс или что-то подобное, лишает их этого разрешения.И только те приложения, основная функция которых зависит от этих разрешений, должны иметь такие разрешения, как приложение Carrier, которое использует исключительно в зависимости от этих разрешений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...