Ostrzeżenia, że ​​Twój apk używa uprawnień, które wymagają polityki prywatności: (android.permission.READ_PHONE_STATE)


85

W manifeście nie dodano android.permission.READ_PHONE_STATE. pozwolenie.

Dlaczego pojawia się błąd, gdy przesyłam nową wersję apk? Błąd znajduje się poniżej.

Twoja aplikacja zawiera plik APK z kodem wersji 1, który żąda następujących uprawnień: android.permission.READ_PHONE_STATE. Aplikacje korzystające z tych uprawnień w pakiecie APK muszą mieć ustawioną politykę prywatności.

Załączam zrzut ekranu mojego konta w sklepie Google Play. wprowadź opis obrazu tutaj

mój plik manifestu.

<?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
Czy zezwolenie istniało w manifeście, który wcześniej usunąłeś i nie przesłałeś nowego pliku APK?
aconnelly

Nie, mój plik manifestu został załączony, możesz zobaczyć.
Jiks

dodaj pozwolenie na odczyt stanu telefonu w swoim manifeście
Noorul

Próbowałem już dodać i ponownie usunąć. Nic nie działa
Narendra Sorathiya

Odpowiedzi:


60

Plik manifest.xml Twojej aplikacji ma te uprawnienia dostępu do informacji z Twojego urządzenia, ale nie masz linku do polityki prywatności podczas przesyłania w Sklepie Play. więc otrzymujesz to ostrzeżenie.

Potrzebujesz polityki prywatności dla aplikacji Jeśli Twoja aplikacja obsługuje osobiste lub wrażliwe dane użytkownika

Dodanie polityki prywatności do informacji o aplikacji pomaga zapewnić przejrzystość sposobu traktowania poufnych danych użytkownika i urządzenia.

****** Aktualizacja
Ustawienie polityki prywatności w Konsoli Google Play zmieniło lokalizacje.

W Konsoli Google Play
wybierz Obecność w sklepie> Zawartość aplikacji.
W sekcji „Polityka prywatności”.


19
Czy istnieje sposób na utworzenie polityki prywatnej z szablonu?
Daniele,

Mam nadzieję, że będziesz musiał pokazać politykę prywatności, ale nie masz strony internetowej, prawdopodobnie dokument dotyczący polityki prywatności będzie zawierał treść tekstową, więc najłatwiejszym sposobem jest utworzenie dokumentu tekstowego z całą twoją polityką prywatności i informacjami związanymi z pozwoleniami. prześlij go do dowolnego darmowego wiadra, takiego jak skrzynka wrzutowa itp., a następnie możesz uzyskać adres URL do użycia w przesłaniu do Sklepu Play.
Deva

Mam ten sam problem. nie użyłem uprawnienia READ_PHONE_STATE, dlaczego jest napisane, że Twoja aplikacja go używa?
Jaydip Kalkani,

3
Dzięki AdMob. Obecna wersja 12.0.0 żąda READ_PHONE_STATE (błąd), nawet jeśli Twoja aplikacja nie ma go w manifeście. Więc to jest to. Powiedzieli, że wkrótce wydadzą aktualizację do 12.0.1.
blackJack

1
Ścieżka do ustawienia polityki prywatności w Google Play Console została zmieniona. Wybierz Obecność w sklepie> Zawartość aplikacji. W sekcji „Polityka prywatności”.
OnJohn

36

Po prostu spróbuj dodać ten wiersz do swojego pliku manifestu:

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

i dodaj atrybut xmlns:tools="http://schemas.android.com/tools"do swojego <manifest>tagu, aby zdefiniować narzędzia przestrzeni nazw

Z dokumentacji dla tools:node="remove":

Usuń ten element ze scalonego manifestu. Chociaż wydaje się, że zamiast tego powinieneś po prostu usunąć ten element, użycie tego jest konieczne, gdy odkryjesz element w swoim połączonym manifeście, którego nie potrzebujesz, i został dostarczony przez plik manifestu o niższym priorytecie, który jest poza twoją kontrolą (np. jako importowana biblioteka).


2
Pozwala to również obejść nieprzyjemne ostrzeżenia o uprawnieniach, które w przeciwnym razie pojawiają się, gdy ktoś ma zamiar pobrać twoją aplikację ... musi to mieć
kwishnu

2
jeśli go użyjesz, nie będziesz mógł użyć READ_PHONE_STATE
Hoàng Đăng

3
[Błąd krytyczny]: 50: 95: Przedrostek „narzędzia” dla atrybutu „narzędzia: węzeł” skojarzony z typem elementu „uprawnienia do używania” nie jest powiązany.
manish kumar

Użyć tego w nagłówku manifestu? <manifest xmlns: android = " schemas.android.com/apk/res/android " xmlns: tools = " schemas.android.com/tools " ...... />
Martin B

6

Zależności, które masz w projekcie, dodają własne uprawnienia. Wykonaj poniższe czynności, aby dowiedzieć się, skąd nadchodzi „READ_PHONE_STATE”.

  1. Odbuduj aplikację na Androida
  2. Wciśnij "Ctrl + Shift + F" w Android Studio (po prostu przeszukaj wszystko w edytorze według własnych preferencji).
  3. Wyszukaj „READ_PHONE_STATE”. Znajdziesz wpis w zregenerowanym pliku manifestu (a nie tym, który pierwotnie utworzyłeś). Po jego ścieżce możesz wiedzieć, z jakiej zależności uprawnienie jest dodawane. wprowadź opis obrazu tutaj


5

musisz określić wersję mini target sdkw pliku manifestu.
Jeśli nie, android.permission.READ_PHONE_STATEzostanie dodany automatycznie podczas eksportowania pliku apk.

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

Świetny! To naprawiło. Był dodawany, gdy nie określono celu.
Tarun

5

Może to być spowodowane przez dowolną bibliotekę stron trzecich, która może zawierać to zezwolenie, więc z mojego doświadczenia w tej dziedzinie musisz dodać politykę prywatności dotyczącą tych konkretnych informacji, co oznacza, że ​​jeśli poprosisz o pozwolenie na konta w swojej aplikacji, musisz zadeklarować, że z Twoim plikiem polityki prywatności wykorzystujemy te dane, tj. adres e-mail lub cokolwiek innego z powodów, takich jak logowanie w grze Google Play.

Też może to zrobić

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

Mam nadzieję, że pokieruje Cię to, co możesz zrobić w przypadku tego ostrzeżenia, utwórz politykę prywatności dla swojej aplikacji i dołącz ją do informacji o niej .


Dzięki :) ale to zadziała <używa-pozwolenia android: name = "android.permission.READ_PHONE_STATE" tools: node = "remove" />?
PriyankaChauhan

4

To biblioteka innej firmy. Możesz znaleźć winowajcę wbuild/outputs/logs/manifest-merger-release-report.txt


3

Obecnie niektóre osoby borykają się z tym samym problemem z powodu używania 12.0.0wersji AdMob lib.

Zaktualizuj go do 12.0.1. To powinno to naprawić. Możesz przeczytać więcej tutaj


Zachęcamy do umieszczania linków do zewnętrznych zasobów, ale proszę dodać kontekst wokół łącza, aby inni użytkownicy mieli pojęcie, co to jest i dlaczego się tam znajduje. Zawsze cytuj najbardziej odpowiednią część ważnego linku, na wypadek gdyby strona docelowa była nieosiągalna lub została trwale wyłączona.
baduker

To była dla mnie poprawka. W A-Studio możesz wyświetlić „scalony manifest”, który wskazuje na Biblioteki Google Play.
Matt D.,

2

Jeśli testujesz swoją aplikację na urządzeniu> Android 6.0, musisz również wyraźnie poprosić użytkownika o udzielenie pozwolenia.

Jak widać tutaj READ_PHONE_STATE mają niebezpieczny poziom.

Jeśli uprawnienie ma niebezpieczny poziom, użytkownik musi zaakceptować lub nie zezwolić ręcznie. Nie masz wyboru, MUSISZ to zrobić

Aby to zrobić ze swojej aktywności, wykonaj następujący kod:

jeśli użytkownik używa Androida M i nie udzielił jeszcze pozwolenia, zapyta o to.

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);
        }

następnie zastąp onRequestPermissionsResultw swojej aktywności

@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
                }
            }
        }
    }

Przeczytaj ten artykuł, aby dowiedzieć się więcej na ten temat


2
  1. Prawdopodobnie używasz PlayServices w wersji 9.6.0. Następnie powinieneś go zaktualizować, to błąd biblioteki. Więcej informacji tutaj .

LUB

  1. Dodaj

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

do pliku manifestu.


1
Ten temat dotyczy problemu z uprawnieniami READ_PHONE_STATE. Dlaczego android.permission.CAMERA?
Alexander Marochko

2

Czy korzystasz z AdSense lub innych reklam w swojej aplikacji, a może Google Analytics? Myślę, że jeśli to zrobisz, nawet jeśli nie masz android.permission.READ_PHONE_STATE w swoim manifeście, zostanie to dodane przez bibliotekę reklam.

Istnieją bezpłatne szablony, które mogą pomóc w utworzeniu polityki prywatności.

Oto e-mail, który otrzymałem w tej sprawie od Google:

Witaj programiście Google Play, z naszych danych wynika, że ​​Twoja aplikacja xxx z nazwą pakietu xxx narusza obecnie nasze zasady dotyczące danych użytkownika dotyczące danych osobowych i informacji poufnych. Problem dotyczący zasad: Google Play wymaga od programistów podania prawidłowej polityki prywatności, gdy aplikacja żąda lub obsługuje poufne informacje o użytkowniku lub urządzeniu. Twoja aplikacja wymaga poufnych uprawnień (np. Aparatu, mikrofonu, kont, kontaktów lub telefonu) lub danych użytkownika, ale nie zawiera obowiązującej polityki prywatności. Wymagane działanie: umieść link do prawidłowej polityki prywatności na stronie z informacjami o aplikacji oraz w samej aplikacji. Więcej informacji znajdziesz w naszym centrum pomocy. Alternatywnie możesz zrezygnować z tego wymogu, usuwając wszelkie prośby o poufne uprawnienia lub dane użytkownika. Jeśli masz dodatkowe aplikacje w swoim katalogu, upewnij się, że są one zgodne z naszymi wymogami dotyczącymi widocznego ujawnienia. Rozwiąż ten problem do 15 marca 2017 r. W przeciwnym razie zostaną podjęte działania administracyjne w celu ograniczenia widoczności Twojej aplikacji, łącznie z usunięciem ze Sklepu Play. Dziękujemy za pomoc w zapewnianiu przejrzystych i przejrzystych informacji dla użytkowników Google Play. Pozdrawiamy, Zespół Google Play


1
Myślę, że dobry punkt wyjścia dla bezpłatnej polityki prywatności można znaleźć tutaj: docracy.com/6516/mobile-privacy-policy-ad-sponsored-apps
Sebastiano Tognacci

Otrzymuję tego samego e-maila od Ciebie. Czy istnieje inna możliwość oprócz Ads i GAnalytics?
wanz

2

Powinieneś zrezygnować z android.permission.READ_PHONE_STATEpozwolenia. Dodaj to do swojego pliku manifestu:

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

1

1. Musisz utworzyć stronę z polityką prywatności w swojej witrynie i zaktualizować swoją politykę prywatności dla uprawnień, o które prosisz.

2. Zaktualizuj nowy pakiet SDK, usuń niechciane uprawnienia i prześlij ponownie aplikację.




0

Aktualizacja 2018:

W przypadku użytkowników AdMob powoduje to AdMob w wersji 12.0.0 (obecnie ostatnia wersja). Błędnie żąda uprawnienia READ_PHONE_STATE, więc nawet jeśli Twoja aplikacja nie wymaga uprawnienia READ_PHONE_STATE w manifeście, nie będziesz mógł zaktualizować swojej aplikacji w Konsoli Google Play (poinformuje Cię o utworzeniu strony polityki prywatności dla swojej aplikacji, ponieważ Twoja aplikacja wymaga tego uprawnienia).

Zobacz: https://developers.google.com/android/guides/releases#march_20_2018_-_version_1200

Ponadto napisali, że wkrótce opublikują aktualizację do wersji 12.0.1, która naprawi to.


0

Napotkałem ten sam problem i wystąpił błąd podczas przesyłania pliku APK do Google Play. Używałem reklam w mojej aplikacji, aw moim pliku manifestu nawet nie wspomniano o uprawnieniu READ_PHONE_STATE. ale mimo to mam ten błąd. Następnie zmieniam zależności dla reklam w pliku build.gradle. a potem rozwiązało mój problem. Rozwiązali ten problem w 12.0.1.

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

0

Zobacz krok po kroku, a zrozumiesz

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
Dodaj wyjaśnienie do swojego kodu, aby inni mogli się z niego uczyć
Nico Haase,

0

Jeśli używasz pakietu device_id, aby uzyskać unikalny identyfikator urządzenia, spowoduje to dodanie android.permission.READ_PHONE_STATEbez Twojej wiedzy, co ostatecznie doprowadzi do ostrzeżenia Sklepu Play.

Zamiast tego możesz użyć pakietu device_info w tym samym celu bez konieczności posiadania dodatkowych uprawnień. Sprawdź ten wątek SO


0

Jeśli uważnie przeczytasz wiadomość, zobaczysz, że korzystasz z uprawnień, takich jak kamera, mikrofon, kontakty, pamięć i telefon itp. I nie podajesz polityki prywatności. jeśli to zrobisz, musisz podać politykę prywatności. więcej informacji o polityce prywatności Androida można znaleźć w google

Aby dodać politykę prywatności w konsoli Play,

  1. Znajdź i wybierz Wszystkie aplikacje .

  2. Wybierz aplikację, do której chcesz dodać swoją Politykę prywatności.

  3. Znajdź Politykę na końcu strony.

  4. Kliknij Treść aplikacji, aby edytować informacje o swojej aplikacji.

  5. Znajdź pole oznaczone Polityka prywatności i umieść adres URL strony z Polityką prywatności

  6. Kliknij Zapisz i gotowe.

Uwaga: Aby udostępnić swoją Politykę prywatności, musisz mieć publiczną stronę internetową. Sklep Google Play nie będzie hostować zasad za Ciebie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.