Testare il comportamento di visibilità del pacchetto

Se la tua app si basa sulle interazioni con altre app per completare i suoi casi d'uso, è utile testare in che modo le modifiche della visibilità dei pacchetti in Android 11 (livello API 30) e versioni successive influiscono sulla tua app.

Questa guida fornisce anche alcuni suggerimenti su come testare le modifiche al comportamento e ti aiuta a configurare i messaggi di log per determinare a un livello più granulare in che modo potrebbe essere interessata la tua app.

Testare le modifiche al comportamento

Per verificare se questa modifica del comportamento influisce sulla tua app, completa i seguenti passaggi:

  1. Installa Android Studio 3.6.1 o versioni successive.
  2. Installa la versione più recente di Gradle supportata da Android Studio.
  3. Imposta il valore targetSdkVersion dell'app su 30 o un valore superiore.
  4. Non includere l'elemento <queries> nel file manifest della tua app.
  5. Chiama il numero getInstalledApplications() o getInstalledPackages(). Entrambi i metodi restituiscono un elenco filtrato se l'operazione ha esito positivo.
  6. Scopri quali funzionalità della tua app non funzionano.
  7. Presenta le voci <queries> appropriate per correggere queste funzionalità.

Configura i messaggi di log per il filtro dei pacchetti

Per scoprire ulteriori dettagli su come la visibilità predefinita delle app influisce sulla tua app, puoi abilitare i messaggi di log per il filtro dei pacchetti. Se stai sviluppando un'app di test o un'app di cui è possibile eseguire il debug in Android Studio, questa funzionalità è disponibile nel log di sistema. Altrimenti, puoi eseguire questo comando in una finestra del terminale per abilitarlo manualmente:

adb shell pm log-visibility --enable PACKAGE_NAME

Quindi, ogni volta che i pacchetti vengono esclusi dai valori restituiti di un oggetto PackageManager, viene visualizzato un messaggio simile al seguente in Logcat:

I/AppsFilter: interaction: PackageSetting{7654321 \
  com.example.myapp/12345} -> PackageSetting{...} BLOCKED