read_contacts react permission internet app android permissions

internet - permissions android react native



Permiso de Android.INTERACT_ACROSS_USERS_FULL (6)

Tengo una aplicación grande en Android.

De vez en cuando la aplicación se bloquea con un error no está claro. No sé exactamente cuándo y por qué sucede esto.

java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL

¿Alguna ayuda?


java.lang.SecurityException: Denegación de permiso: la configuración de obtener / establecer para que el usuario solicite ejecutarse como usuario -2 pero está llamando desde el usuario 0; esto requiere android.permission.INTERACT_ACROSS_USERS_FULL

Agregue este android:protectionLevel="signature" en su manifiesto.

Para más detalles, puedes consultar Permission-Element

Me gusta:

<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>


El mismo problema que recibía cuando uso billingProcessor.subscribe () o billingProcessor.purchase () con dos parámetros como Activity y product_id del producto. Hubo que pase el valor de product_id está vacío .

Por favor, una vez que se asegure de que está pasando valor en product_id no está vacío.


Es un error muy extraño ... recibí este después de cambiar de Java a Kotlin o tal vez de cualquier actualización de Android Studio. Comencé a comentar los elementos uno por uno de los archivos XML y .kt hasta que encontré que el error no tenía nada que ver con ningún ID de usuario (que se mencionó en el error), ni tampoco ninguna llamada de modificación, el error fue causado por un Spinner elemento en XML, nada de eso en el archivo .kt cuando cargué los elementos, solo esto:

<Spinner android:id="@+id/number_people_sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" />

Así que lo borré y las cosas volvieron a ir bien. Estoy pensando que el problema fue causado por un cierto espacio entre los elementos (porque esa flecha giratoria estaba en un Fragmento en una Actividad con pestañas) y veo en las largas líneas de error algo sobre el espacio y las medidas de los niños.

Ten en cuenta solo para verificar cualquier cosa pequeña posible en el archivo de error, el error podría ser de cualquier cosa ...


Para resumir de this respuesta, y al observar las fuentes de UserHandle.java , vemos el significado de los ID de usuario del marco .

# | @UserIdInt | Value | Status | Description | # | --------------------- | ------ | ---------- | ------------| # | USER_OWNER | 0 | deprecated | "owner" user of the device # | USER_SYSTEM | 0 | ok | "system" user of the device # | USER_ALL | -1 | ok | ALL users on the device | USER_CURRENT | -2 | ok | the currently active user # | USER_CURRENT_OR_SELF | -3 | ok | id from which we would like to send to the current user # | USER_NULL | -10000 | ok | An undefined user id

Luego, para comprender lo que significa android:protectionLevel="signature" , deberá leer la página sobre permission-element . Que se resume en la tabla:

Entonces, lo que debe hacer en su AndroidManifest.xml depende mucho de las API que necesita admitir, ya que las API más altas de 23 también requieren un android:permissionGroup= definition , para android:permissionGroup= no normales ("peligrosos") ...

También es bueno saberlo (por @CommonsWare)

Para poder mantener INTERACT_ACROSS_USERS , su aplicación debe estar firmada por la clave de firma del firmware o debe estar instalada en la partición del sistema.

Para poder mantener INTERACT_ACROSS_USERS_FULL , su aplicación debe estar firmada por la clave de firma del firmware.


Resolví este problema por suerte. Estaba usando una instancia de fragmento de singleton que causó este problema. Cuando reemplacé la llamada fragment.getInstance() con un new fragment() funcionó a la perfección. los fragmentos no deben utilizarse como singletons y deben devolverse (si es necesario) con el estado guardado.


Una de las posibles soluciones es deshabilitar el llenado automático, pero funciona solo en Android Oreo. Revisa este link

Simplemente agrega este código a tu aplicación:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { window.decorView.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS; }