Advertencias que su Apk está usando permisos que requieren una política de privacidad: (android.permission.READ_PHONE_STATE)


82

En el manifiesto no se agregó android.permission.READ_PHONE_STATE. permiso.

Por qué aparece el error cuando subo una nueva versión de apk, el error se muestra a continuación.

Su aplicación tiene un apk con el código de versión 1 que solicita los siguientes permisos: android.permission.READ_PHONE_STATE. Las aplicaciones que usan estos permisos en un APK deben tener una política de privacidad establecida.

He adjuntado una captura de pantalla de mi cuenta de Google Play Store. ingrese la descripción de la imagen aquí

mi archivo de manifiesto.

<?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
¿Existía el permiso en el manifiesto anterior al que desde entonces ha eliminado y no ha subido la nueva apk?
Aconnelly

No, puede ver mi archivo de manifiesto adjunto.
Jiks

agregue permiso de lectura del estado del teléfono en su manifiesto
Noorul

Ya intenté agregar y eliminar nuevamente. Nada funciona
Narendra Sorathiya

Respuestas:


54

El manifest.xml de su aplicación tiene estos permisos para acceder a la información desde su dispositivo, pero no tiene un enlace a la política de privacidad mientras envía en Play Store. entonces recibes esta advertencia.

Necesita una política de privacidad para la aplicación si su aplicación maneja datos de usuario personales o confidenciales

Agregar una política de privacidad a la lista de la tienda de su aplicación ayuda a brindar transparencia sobre cómo trata los datos confidenciales del usuario y del dispositivo.

****** Actualización
La configuración de la política de privacidad en Google Play Console ha cambiado de ubicación.

En Google Play Console,
seleccione Presencia en la tienda> Contenido de la aplicación.
En "Política de privacidad".


18
¿Hay alguna forma de crear la política privada a partir de una plantilla?
Daniele

Espero que necesite mostrar la política de privacidad, pero no tiene un sitio web, probablemente el documento de la política de privacidad será contenido de texto, por lo que la forma más fácil es que podamos hacer un documento de Word con toda su política de privacidad y la información relacionada con los permisos, entonces usted puede cárguelo en cualquier cubo gratuito como buzón, etc., luego puede obtener la URL para usar en el envío de Play Store.
Deva

Estoy enfrentando el mismo problema. No usé el permiso READ_PHONE_STATE, entonces, ¿por qué dice que su aplicación usa esto?
Jaydip Kalkani

2
Gracias a AdMob. Su versión actual 12.0.0 solicita READ_PHONE_STATE (error), incluso si su aplicación no lo tiene en el manifiesto. Eso es todo. Dijeron que pronto lanzarán una actualización a 12.0.1.
blackJack

1
La configuración de la política de privacidad en Google Play Console ha cambiado la ruta. Seleccione Presencia en la tienda> Contenido de la aplicación. En "Política de privacidad".
OnJohn

34

Solo intente agregar esta línea a su archivo de manifiesto:

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

y agregue un atributo xmlns:tools="http://schemas.android.com/tools"a su <manifest>etiqueta para definir herramientas de espacio de nombres

De la documentación para tools:node="remove":

Elimina este elemento del manifiesto combinado. Aunque parece que debería eliminar este elemento, usarlo es necesario cuando descubre un elemento en su manifiesto combinado que no necesita, y fue proporcionado por un archivo de manifiesto de menor prioridad que está fuera de su control (como como una biblioteca importada).


2
Esto también evita las desagradables advertencias de permisos que, de lo contrario, aparecen cuando alguien va a descargar su aplicación ... algo que debe tener
kwishnu

2
si usa esto, no podrá usar READ_PHONE_STATE
Hoàng Đăng

3
[Error fatal]: 50: 95: El prefijo "herramientas" para el atributo "herramientas: nodo" asociado con un tipo de elemento "usa-permiso" no está vinculado.
manish kumar

¿Usar esto en el encabezado del manifiesto? <manifest xmlns: android = " schemas.android.com/apk/res/android " xmlns: tools = " schemas.android.com/tools " ...... />
Martin B

6

Las dependencias que tengas en tu proyecto agregarán sus propios permisos. Haga lo siguiente para averiguar de dónde viene "READ_PHONE_STATE".

  1. Reconstruye tu aplicación de Android
  2. Presiona "Ctrl + Shift + F" en Android Studio (básicamente haz una búsqueda en el editor de tu preferencia).
  3. Busque "READ_PHONE_STATE", encontrará la entrada en un archivo de manifiesto regenerado (no en el que creó originalmente). Por su ruta, puede saber desde qué dependencia se agrega el permiso. ingrese la descripción de la imagen aquí


5

debe especificar la versión miny target sdken el archivo de manifiesto.
De lo contrario android.permission.READ_PHONE_STATE, se agregará automáticamente al exportar su archivo apk.

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

¡Excelente! Eso lo arregló. Se estaba agregando cuando no tenía el objetivo especificado.
Tarun

4

Puede ser debido a cualquier biblioteca de terceros que pueda incluir ese permiso, por lo que, según mi experiencia en este campo, debe agregar la política de privacidad con respecto a esa información en particular, significa que si solicita permiso para obtener cuentas en su aplicación, debe declarar con su archivo de política de privacidad usamos esos datos, es decir, la dirección de correo electrónico o lo que sea con motivos como para iniciar sesión en el juego de Google Play.

También puede hacer esto

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

Espero que esto te sirva de guía en lo que puedes hacer para esta advertencia: crea una política de privacidad para tu aplicación y adjúntala a la lista de la tienda .


Gracias :) pero esto funcionará <uses-allow android: name = "android.permission.READ_PHONE_STATE" tools: node = "remove" />?
PriyankaChauhan

4

Es una biblioteca de terceros. Puedes encontrar al culpable enbuild/outputs/logs/manifest-merger-release-report.txt


3

Actualmente, algunas personas se enfrentan al mismo problema debido al uso de la 12.0.0versión lib de AdMob.

Actualícelo a 12.0.1. Esto debería arreglarlo. Puedes leer más aquí


Se recomiendan los enlaces a recursos externos, pero agregue contexto alrededor del enlace para que sus compañeros usuarios tengan una idea de qué es y por qué está allí. Siempre cite la parte más relevante de un enlace importante, en caso de que el sitio de destino sea inaccesible o se desconecte permanentemente.
baduker

Esta fue la solución para mí. En A-Studio, puede ver el "manifiesto combinado" y apunta a las bibliotecas de Google Play.
Matt D.

2

Si está probando su aplicación en un dispositivo> Android 6.0, también debe pedirle explícitamente al usuario que otorgue el permiso.

Como puede ver aquí READ_PHONE_STATE tiene un nivel peligroso.

Si un permiso tiene un nivel peligroso, el usuario debe aceptar o no este permiso manualmente. No tienes elección, DEBES hacer esto

Para hacer esto desde tu actividad ejecuta el siguiente código:

Si el usuario usa Android M y aún no otorgó el permiso, lo solicitará.

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

luego anula onRequestPermissionsResulttu actividad

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

Deberías leer este artículo para saber más al respecto.


2
  1. Probablemente esté utilizando PlayServices de la versión 9.6.0. Entonces deberías actualizarlo, es un error de la biblioteca. Más info aquí .

O

  1. Añadir

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

a su archivo de manifiesto.


1
Este tema trata sobre el problema del permiso READ_PHONE_STATE. ¿Por qué android.permission.CAMERA?
Alexander Marochko

2

¿Utiliza AdSense u otros anuncios en su aplicación, o quizás Google Analytics? Creo que si lo hace, incluso si no tiene android.permission.READ_PHONE_STATE en su manifiesto, la biblioteca de anuncios lo agrega.

Existen plantillas gratuitas que pueden ayudarlo a crear una política de privacidad.

Este es el correo electrónico que recibí de Google al respecto:

Hola, programador de Google Play: Nuestros registros muestran que su aplicación, xxx, con el nombre de paquete xxx, actualmente infringe nuestra política de datos de usuario con respecto a la información personal y confidencial. Problema de política: Google Play requiere que los desarrolladores proporcionen una política de privacidad válida cuando la aplicación solicita o maneja información confidencial del usuario o del dispositivo. Su aplicación solicita permisos confidenciales (por ejemplo, cámara, micrófono, cuentas, contactos o teléfono) o datos de usuario, pero no incluye una política de privacidad válida. Acción requerida: incluye un vínculo a una política de privacidad válida en la página de la ficha de Play Store de tu aplicación y dentro de tu aplicación. Puede encontrar más información en nuestro centro de ayuda. Alternativamente, puede optar por no cumplir con este requisito eliminando cualquier solicitud de permisos confidenciales o datos de usuario. Si tiene aplicaciones adicionales en su catálogo, asegúrese de que cumplan con nuestros requisitos de Divulgación destacada. Resuelva este problema antes del 15 de marzo de 2017 o se tomarán medidas administrativas para limitar la visibilidad de su aplicación, incluida la eliminación de Play Store. Gracias por ayudarnos a brindar una experiencia clara y transparente para los usuarios de Google Play. Saludos, El equipo de Google Play


1
Creo que aquí se puede encontrar un buen punto de partida para una política de privacidad gratuita: docracy.com/6516/mobile-privacy-policy-ad-sponsored-apps
Sebastiano Tognacci

Recibo el mismo correo electrónico con usted, ¿hay otra posibilidad que no sea Ads y GAnalytics?
wanz

2

Deberías dejar el android.permission.READ_PHONE_STATEpermiso. Agregue esto a su archivo de manifiesto:

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

1

1. Debe crear una página de política de privacidad en su sitio web y actualizar su política de privacidad para los permisos que solicita.

2.Actualice el nuevo SDK, elimine los permisos no deseados y vuelva a enviar la aplicación.




0

Actualización de 2018:

Para los usuarios de AdMob, esto provoca la versión 12.0.0 de AdMob (actualmente la última versión). Solicita incorrectamente el permiso READ_PHONE_STATE, por lo que incluso si su aplicación no requiere el permiso READ_PHONE_STATE en el manifiesto, no podrá actualizar su aplicación en Google Play Console (le indicará que cree una página de política de privacidad para su aplicación, porque su aplicación requiere este permiso).

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

Además, escribieron que publicarán una actualización a 12.0.1 arreglando esto pronto.


0

Me enfrentaba al mismo problema y recibí el error al cargar la aplicación en Google Play. Usé anuncios en mi aplicación y ni siquiera se me mencionó el permiso READ_PHONE_STATE en mi archivo de manifiesto. pero aún tengo este error. Luego cambio las dependencias de los anuncios en el archivo build.gradle. y luego resolvió mi problema. Resolvieron este problema en 12.0.1.

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

0

Mira paso a paso y lo entenderás

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
Agregue alguna explicación a su código, de modo que otros puedan aprender de él
Nico Haase

0

Si está utilizando el paquete device_id para obtener la identificación única del dispositivo, eso agregará un android.permission.READ_PHONE_STATEsin su conocimiento que eventualmente conducirá a la advertencia de Play Store.

En su lugar, puede usar el paquete device_info para el mismo propósito sin la necesidad de un permiso adicional. Mira este hilo SO


0

Si lee el mensaje con atención, verá que está utilizando los permisos como cámara, micrófono, contactos, almacenamiento y teléfono, etc. y no proporciona una política de privacidad. debe proporcionar una política de privacidad si lo hace. Puede encontrar más información sobre la política de privacidad de Android en Google.

Para agregar la política de privacidad en la consola In-Play,

  1. Busque y seleccione Todas las aplicaciones .

  2. Seleccione la aplicación a la que necesita agregar su Política de privacidad.

  3. Busque la Política al final de la página.

  4. Haga clic en Contenido de la aplicación para editar la lista de su aplicación.

  5. Busque el campo etiquetado Política de privacidad y coloque la URL de la página de su Política de privacidad

  6. Haga clic en Guardar y estará listo para comenzar.

Nota: Debe tener una página web pública para alojar su Política de privacidad. Google Play Store no albergará la política por ti.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.