Попередження, у яких ваш apk використовує дозволи, що вимагають політики конфіденційності: (android.permission.READ_PHONE_STATE)


86

У маніфесті не додано android.permission.READ_PHONE_STATE. дозволу.

Чому виникає помилка, коли я завантажую нову версію apk, нижче з’являється помилка.

У вашому додатку є файл .apk з кодом версії 1, який вимагає таких дозволів: android.permission.READ_PHONE_STATE. Додатки, які використовують ці дозволи в файлі .apk, повинні мати встановлену політику конфіденційності.

Я додав знімок екрана свого облікового запису Google Play Store. введіть тут опис зображення

мій файл маніфесту.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.package.name">

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

    <application
        android:name=".utils.PreferenceManager"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".SplashScreen"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CategoryListActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name=".ImagesActivity"
            android:screenOrientation="portrait" />

    </application>

</manifest>

1
Чи існував дозвіл у маніфесті, до якого ви з тих пір видалили та не завантажили новий apk?
aconnelly

Ні, мій файл маніфесту вкладено, ви можете бачити.
Джикс

додайте до свого маніфесту дозвіл на читання телефону
Noorul

Я вже намагався додати та знову видалити. Нічого не працює
Narendra Sorathiya

2
Перевірте це: stackoverflow.com/a/42751979/3806413
0xAliHn

Відповіді:


61

Маніфест.xml вашого додатка має ці дозволи на доступ до інформації з вашого пристрою, але ви не маєте посилання на політику конфіденційності під час надсилання у магазині відтворення. отже, ви отримуєте це попередження.

Потрібна політика конфіденційності програми, якщо ваша програма обробляє особисті або конфіденційні дані користувачів

Додавання політики конфіденційності до списку додатків у магазині допомагає забезпечити прозорість того, як ви ставитеся до конфіденційних даних користувачів та пристроїв.

****** Оновлення
Налаштування політики конфіденційності в Google Play Console змінило місцеположення.

У консолі Google Play
виберіть Присутність у магазині> Вміст програми.
У розділі "Політика конфіденційності".


19
Чи є спосіб створити приватну політику за шаблоном?
Даніеле

Сподіваюся, вам потрібно буде показати політику конфіденційності, але у вас немає веб-сайту, ймовірно, документ про політику конфіденційності буде текстовим вмістом, тому найпростіший спосіб - це зробити word документ із усією вашою політикою конфіденційності та інформацією, пов’язаною з дозволами, тоді ви можете завантажте його на будь-який безкоштовний відро, як-от коробку і т. д., тоді ви зможете отримати URL-адресу для використання у поданні магазину ігор.
Дева

Я стикаюся з тією ж проблемою. я не використовував дозвіл READ_PHONE_STATE, чому тоді сказано, що ваш додаток використовує це?
Джейдіп Калкані,

3
Через AdMob. Їхня поточна версія 12.0.0 вимагає READ_PHONE_STATE (помилка), навіть якщо у вашому додатку немає її в маніфесті. От і все. Вони заявили, що найближчим часом випустять оновлення до 12.0.1.
blackJack

1
Параметр політики конфіденційності в Google Play Console змінено. Виберіть Присутність у магазині> Вміст програми. У розділі "Політика конфіденційності".
OnJohn

36

Просто спробуйте додати цей рядок до файлу маніфесту:

<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />

і додати атрибут xmlns:tools="http://schemas.android.com/tools"до вашого <manifest>тегу, щоб визначити інструменти простору імен

З документації на tools:node="remove":

Видаліть цей елемент із об’єднаного маніфесту. Хоча здається, що вам слід замість цього просто видалити цей елемент, використовувати це необхідно, коли ви виявите елемент у своєму об’єднаному маніфесті, який вам не потрібен, і він наданий файлом маніфесту з нижчим пріоритетом, який не під вашим контролем (наприклад, як імпортна бібліотека).


2
Це також обходить неприємні попередження про дозволи, які інакше з’являються, коли хтось збирається завантажити вашу програму ... обов’язково
kwishnu

2
якщо використовувати це, ви не зможете використовувати READ_PHONE_STATE
Hoàng Đăng

3
[Фатальна помилка]: 50: 95: Префікс "інструменти" для атрибута "інструменти: вузол", пов'язаний з типом елемента "користується дозволом", не пов'язаний.
manish kumar 02

Використовувати це в заголовку маніфесту? <manifest xmlns: android = " schemas.android.com/apk/res/android " xmlns: tools = " schemas.android.com/tools " ...... />
Мартін Б

6

Залежності, які ви маєте у своєму проекті, додадуть власні дозволи. Будь ласка, виконайте наведені нижче дії, щоб дізнатися, звідки надходить "READ_PHONE_STATE".

  1. Відновіть свій додаток для Android
  2. Натисніть "Ctrl + Shift + F" в android studio (в основному виконайте пошук у всьому редакторі).
  3. Шукаючи "READ_PHONE_STATE", ви знайдете запис у відтвореному файлі маніфесту (а не в тому, який ви створили спочатку). За його шляхом ви можете знати, з якої залежності додається дозвіл. введіть тут опис зображення


5

вам потрібно вказати minі target sdkверсію у файлі маніфесту.
Якщо ні, android.permission.READ_PHONE_STATEфайл буде доданий автоматично під час експорту вашого файлу .apk.

<uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="19" />

Чудово! Це виправило. Він додавався, коли я не вказав ціль.
Тарун

5

Це може бути через будь-яку третю сторону, яка може включати цей дозвіл, тому, з мого досвіду в цій галузі. Ви повинні додати політику конфіденційності щодо цієї конкретної інформації, що означає, якщо ви просите отримати дозвіл на облікові записи у своєму додатку, ніж ви повинні заявити, що з вашим файлом політики конфіденційності ми використовуємо ці дані, тобто адресу електронної пошти, або що завгодно з причин, таких як вхід в гру Google Play.

Також може це зробити

<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />

Сподіваюся, це допоможе вам, що ви можете зробити для цього попередження, створіть політику конфіденційності для свого додатка та додайте її до списку магазинів .


Дякую :) але це буде працювати <koristi-дозвіл android: name = "android.permission.READ_PHONE_STATE" tools: node = "remove" />?
ПриянкаЧоухан


3

В даний час деякі люди стикаються з такою ж проблемою через використання 12.0.0версії AdMob lib.

Оновіть його до 12.0.1. Це повинно це виправити. Детальніше ви можете прочитати тут


Посилання на зовнішні ресурси заохочуються, але, будь ласка, додайте контекст навколо посилання, щоб ваші однодумці мали певне уявлення, що це таке і чому воно існує. Завжди цитуйте найбільш релевантну частину важливого посилання, якщо цільовий сайт недоступний або залишається назавжди поза мережею.
baduker

Це було виправлення для мене. В A-Studio ви можете переглянути "об’єднаний маніфест", і він вказує на бібліотеки Google Play.
Matt D.

2

Якщо ви тестуєте свою програму на пристрої> android 6.0, вам також потрібно явно попросити користувача надати дозвіл.

Як бачите, тут READ_PHONE_STATE є небезпечний рівень.

Якщо дозвіл має небезпечний рівень, користувач повинен прийняти цей дозвіл вручну чи ні. У вас немає вибору, ви ПОВИННІ це зробити

Для цього з вашої діяльності виконайте такий код:

якщо користувач використовує Android M і не надав дозволу, він попросить його.

public static final int READ_PHONE_STATE_PERMISSION = 100;

  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE_PERMISSION);
        }

потім відмінити onRequestPermissionsResultу своїй діяльності

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case READ_PHONE_STATE_PERMISSION: {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    //Permission granted do what you want from this point
                }else {
                    //Permission denied, manage this usecase
                }
            }
        }
    }

Вам слід прочитати цю статтю, щоб дізнатися більше про неї


2
  1. Можливо, ви використовуєте PlayServices версії 9.6.0. Тоді вам слід оновити його, це помилка бібліотеки. Більше інформації тут .

АБО

  1. Додати

    <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />

у файл маніфесту.


1
Ця тема стосується проблеми дозволу READ_PHONE_STATE. Чому android.permission.CAMERA?
Олександр Марочко

2

Ви використовуєте AdSense або іншу рекламу у своєму додатку, чи, можливо, Google Analytics? Думаю, якщо ви зробите це, навіть якщо у вашому маніфесті немає android.permission.READ_PHONE_STATE, це додається бібліотекою оголошень.

Існують безкоштовні шаблони, які можуть допомогти вам створити політику конфіденційності.

Ось електронний лист, який я отримав від Google:

Привіт розробнику Google Play! Згідно з нашими даними, ваш додаток xxx з назвою пакета xxx наразі порушує нашу політику щодо даних користувачів щодо особистої та конфіденційної інформації. Проблема з політикою: Google Play вимагає від розробників надати дійсну політику конфіденційності, коли програма запитує або обробляє конфіденційну інформацію про користувача чи пристрій. Ваш додаток вимагає конфіденційних дозволів (наприклад, камери, мікрофона, облікових записів, контактів або телефону) або даних користувачів, але не містить дійсної політики конфіденційності. Потрібна дія: додайте посилання на дійсну політику конфіденційності на сторінці додатка в магазині та в додатку. Ви можете знайти більше інформації в нашому довідковому центрі. Крім того, ви можете відмовитися від цієї вимоги, видаливши будь-які запити на конфіденційні дозволи або дані користувача. Якщо у вашому каталозі є додаткові програми, будь ласка, переконайтесь, що вони відповідають нашим вимогам щодо розкриття інформації. Будь ласка, виріште цю проблему до 15 березня 2017 року, інакше будуть вжиті адміністративні заходи щодо обмеження видимості вашого додатка, аж до видалення з Play Store. Дякуємо, що допомогли нам забезпечити чіткий та прозорий досвід для користувачів Google Play. З повагою, Команда Google Play


1
Думаю, хороший вихідний пункт для безкоштовної політики конфіденційності можна знайти тут: docracy.com/6516/mobile-privacy-policy-ad-sponsored-apps
Себастьяно

Я отримую той самий електронний лист з вами, чи є інша можливість, крім Ads та GAnalytics?
wanz

2

Вам слід відмовитись від android.permission.READ_PHONE_STATEдозволу. Додайте це у свій файл маніфесту:

<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:node="remove" />

1

1. Вам потрібно створити сторінку політики конфіденційності на своєму веб-сайті та оновити політику конфіденційності для дозволів, які ви просите.

2.Оновіть новий SDK, видаліть небажані дозволи та повторно надішліть програму.


1

Я знайшов цей безкоштовний веб-сайт, який створить для вас політику І розмістить його:

https://www.freeprivacypolicy.com/

Потім додайте його до магазину відтворення в розділі «Список магазинів» - унизу додайте загальнодоступне посилання на політику, отриману з https://www.freeprivacypolicy.com/



0

2018 оновлення:

Для користувачів AdMob це спричиняє версію 12.0.0 AdMob (остання версія). Він помилково вимагає дозволу READ_PHONE_STATE, тому, навіть якщо ваша програма не вимагає дозволу READ_PHONE_STATE у маніфесті, ви не зможете оновити програму в консолі Google Play (вона запропонує створити сторінку політики конфіденційності для вашої програми оскільки ваш додаток вимагає цього дозволу).

Дивіться це: https://developers.google.com/android/guides/releases#march_20_2018_-_version_1200

Крім того, вони написали, що найближчим часом опублікують оновлення до 12.0.1, яке це виправить.


0

Я зіткнувся з такою ж проблемою і отримав помилку під час завантаження apk в Google play. Я використовував рекламу в своєму додатку, і я навіть не згадував дозвіл READ_PHONE_STATE у своєму файлі маніфесту. але все ж я отримав цю помилку. Потім я змінюю залежності для оголошень у файлі build.gradle. а потім це вирішило моє питання. Вони вирішили це питання в 12.0.1.

compile 'com.google.android.gms:play-services-ads:12.0.1'

0

Подивіться стеб за кроком, і ви зрозумієте

public static String getVideoTitle(String youtubeVideoUrl) {
        Log.e(youtubeVideoUrl.toString() + " In GetVideoTitle Menu".toString() ,"hiii" );
        try {

            if (youtubeVideoUrl != null) {
                URL embededURL = new URL("https://www.youtube.com/oembed?url=" +
                        youtubeVideoUrl + "&format=json"
                );
                Log.e(youtubeVideoUrl.toString() + " In EmbedJson Try Function ".toString() ,"hiii" );
                Log.e(embededURL.toString() + " In EmbedJson Retrn value ".toString() ,"hiii" );
                Log.e(new JSONObject(IOUtils.toString(embededURL)).getString("provider_name").toString() + " In EmbedJson Retrn value ".toString() ,"hiii" );

                return new JSONObject(IOUtils.toString(embededURL)).getString("provider_name").toString();
            }
        } catch (Exception e) {
            Log.e(" In catch Function ".toString() ,"hiii" );

            e.printStackTrace();
        }
        return null;
    }

2
Будь ласка, додайте до свого коду якесь пояснення, щоб інші могли навчитися з нього
Ніко Хаасе,

0

Якщо ви використовуєте пакет device_id для отримання унікального ідентифікатора пристрою, це додасть android.permission.READ_PHONE_STATEбез вашого відома, що врешті призведе до попередження Play Store.

Натомість ви можете використовувати пакет device_info з тією ж метою без необхідності додаткового дозволу. Перевірте цю тему SO


0

Якщо ви уважно прочитаєте повідомлення, ви побачите, що використовуєте дозволи, такі як камера, мікрофон, контакти, сховище та телефон тощо, і ви не надаєте політику конфіденційності. вам потрібно надати політику конфіденційності, якщо ви це зробите. Ви можете знайти більше інформації про політику конфіденційності Android на Google

Щоб додати Політику конфіденційності в консолі Play,

  1. Знайдіть і виберіть Усі програми .

  2. Виберіть програму, до якої потрібно додати політику конфіденційності.

  3. Знайдіть Політику в кінці сторінки.

  4. Клацніть Вміст програми, щоб відредагувати список додатків.

  5. Знайдіть поле з написом Політика конфіденційності та розмістіть URL-адресу сторінки своєї Політики конфіденційності

  6. Натисніть Зберегти, і ви готові піти.

Примітка. Для розміщення Вашої Політики конфіденційності потрібно мати загальнодоступну веб-сторінку. Google Play Store не розміщуватиме політику для вас.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.