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>
Jiks
fuente
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".

Deva
fuente
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).

Radi
fuente
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í
Lalit Singh Rana
fuente
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" />
user3262030
fuente
¡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 .

Ajay Pandya
fuente
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

Mateusz Kaflowski
fuente
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í

Parvesh
fuente
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.

agonista_
fuente
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.

Alejandro Marochko
fuente
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

Sebastiano Tognacci
fuente
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" />
GIRIRAJ NAGAR
fuente
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.

Kin Patel
fuente
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.

veintiuna
fuente
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'
Aditya Vyas-Lakhan
fuente
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;
    }
Nilesh Varchand
fuente
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

Sisir
fuente
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.

Paresh Mangukiya
fuente