Android: DocumentsUI muestra una aplicación "anónima" cuando solicita acceso al directorio

CorePress2024-01-25  257

Un usuario informó que mi aplicación no solicita acceso al directorio al seleccionar una carpeta mediante la intención ACTION_OPEN_DOCUMENT_TREE. Por alguna razón no muestra mi solicitud, sino "Anónimo":

Traducido: "Permitir que Anonymous acceda a los archivos de la cámara". Esto permitirá a Anonymous acceder al contenido actual y futuro almacenado en Camera".

El usuario tiene un MIUI 12 con Android 11 en un Mi Note 10 lite. Me pasa lo mismo solo con un Mi Note 10, sin problemas.

Comprobado el código fuente de Android:

https://android.googlesource.com/platform/packages/apps/DocumentsUI/+/refs/heads/master/src/com/android/documentsui/picker/ConfirmFragment.java#82

case TYPE_OEPN_TREE:
    final Uri treeUri = mTarget.getTreeDocumentUri();
    final BaseActivity activity = (BaseActivity) getActivity();
    final String target = activity.getCurrentTitle();
    final String text = getString(R.string.open_tree_dialog_title,
            **getCallingAppName**(getActivity()), target);
    message = getString(R.string.open_tree_dialog_message,
            **getCallingAppName**(getActivity()), target);

    builder.setTitle(text);
    builder.setMessage(message);
    builder.setPositiveButton(
            R.string.allow,
            (DialogInterface dialog, int id) -> {
                pickResult.increaseActionCount();
                mActions.finishPicking(treeUri);
            });
    break;


@NonNull
public static String getCallingAppName(Activity activity) {
    final String anonymous = activity.getString(R.string.anonymous_application);
    final String packageName = getCallingPackageName(activity);
    if (TextUtils.isEmpty(packageName)) {
        return anonymous;
    }

    final PackageManager pm = activity.getPackageManager();
    ApplicationInfo ai;
    try {
        ai = pm.getApplicationInfo(packageName, 0);
    } catch (final PackageManager.NameNotFoundException e) {
        return anonymous;
    }

    CharSequence result = pm.getApplicationLabel(ai);
    return TextUtils.isEmpty(result) ? anonymous : result.toString();
}

public static String getCallingPackageName(Activity activity) {
    String callingPackage = activity.getCallingPackage();
    // System apps can set the calling package name using an extra.
    try {
        ApplicationInfo info =
                activity.getPackageManager().getApplicationInfo(callingPackage, 0);
        if (isSystemApp(info) || isUpdatedSystemApp(info)) {
            final String extra = activity.getIntent().getStringExtra(
                    Intent.EXTRA_PACKAGE_NAME);
            if (extra != null && !TextUtils.isEmpty(extra)) {
                callingPackage = extra;
            }
        }
    } catch (NameNotFoundException e) {
        // Couldn't lookup calling package info. This isn't really
        // gonna happen, given that we're getting the name of the
        // calling package from trusty old Activity.getCallingPackage.
        // For that reason, we ignore this exception.
    }
    return callingPackage;
}

...y parece que por alguna razón no se encuentra el nombre de mi paquete. ¿Cómo puede ca¿Qué sucederá? Le pedí que instalara una de mis otras aplicaciones y eso también sucede allí. Luego le pedí que instalara otra aplicación de la tienda de juegos (FX File Explorer) y ahí no sucede. Por lo tanto, es específico para su dispositivo y mi aplicación.

1

"Comprobamos el código fuente de Android" -- tenga en cuenta que los fabricantes de dispositivos como Xiaomi modifican con frecuencia el código fuente del sistema operativo. Si asumimos que este código sigue siendo exacto, supongo que getApplicationLabel() devuelve nulo. ¿Tiene un atributo android:label en su <aplicación?ción> elemento en el manifiesto? Si es así, quizás MIUI esté haciendo algo diferente allí.

- CommonsWare

28/03/2021 a las 17:50

Claro, tengo la etiqueta app: ahí @CommonsWare y también sé que los fabricantes en general modifican todo tipo de cosas en la fuente. Que el diálogo muestre "Anónimo" Es solo un síntoma, el peor es que mi aplicación tampoco obtiene permiso de lectura/escritura en la carpeta. Desde que tengo un dispositivo bastante similarMi Note 10 (no lite) con la misma versión de MIUI. Supongo que la parte del código fuente es prácticamente la misma.

- JayTee

28/03/2021 a las 20:19

1

Todo lo que puedo sugerir entonces es instalar esta aplicación, mirar el manifiesto de FX File Explorer y ver qué relevancia es diferente al suyo.

- CommonsWare

28/03/2021 a las 20:31

Mi aplicación no solicita acceso al directorio al seleccionar una carpeta a través de ACTION_OPEN_DOCUMENT_TREE i. Tu aplicación no tiene que solicitar nada si usas esa acción. Su aplicación tendrá acceso al directorio que el usuario eligió. Por favor reformule.

- aplicaciones negras

28/03/2021 a las 20:35

¡Gracias @CommonsWare! app:description no es parte de la etiqueta de mi aplicación y algunas otras relacionadas con las copias de seguridad, no veo por qué una de ellas debería causarlo, pero solo como prueba las agregué todas y también eliminé la etiqueta "&" desde mi aplicación: etiqueta. También solicité un logcat, tal vez haya algo de información allí.

- JayTee

29 de marzo de 2021 a las 7:26



------------------------------------

Resultó que este usuario que tenía ese problema desactivó las optimizaciones de MIUI en la configuración del desarrollador.



------------------------------------

Informe de error: συσκευη, εκδοση miui, instalación de Play Store (alfa 1021). Era imposible especificar un archivo de BIOS o especificar un directorio de imágenes de juego cuando MIUI opLas sincronizaciones están desactivadas. Al volver a activarlos se solucionó el problema y los directorios se escanean normalmente. Además, en la ventana emergente para permitir el acceso a la carpeta, la aplicación se muestra como "Anónimo" en lugar de AetherSX2 en mi sistema. Algún desarrollador hablaba de tener el mismo problema aquí.

Compartir Seguir Respondido

16 de enero de 2022 a las 20:10

estampar

estampar

1

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare