Autore Topic: Informazioni dall'intent al ricevimento di ACTION_PACKAGE_ADDED  (Letto 671 volte)

Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Informazioni dall'intent al ricevimento di ACTION_PACKAGE_ADDED
« il: 21 Settembre 2012, 01:33:48 CEST »
0
Salve ragazzi e ragazze ho un problema che mi sta facendo impazzire.
Vengo subito al punto:
Diciamo che ho un receiver che mi rileva l'azione ACTION_PACKAGE_ADDED

Codice: [Seleziona]
public void onReceive(Context _context, Intent _intent)
a questo punto vorrei che la mia applicazione estraesse i seguenti valori:

Application Name
Package Name
Activity Name

che mi serviranno per andare a inserire un record nel DB delle applicazioni installate.

Sono certo che è una stupidaggine, ma non ne vengo proprio a capo.
Mi sapreste indicare come fare.
ho provato varie strade, ma nessuna ha funzionato.

Grazie, Manuel.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Informazioni dall'intent al ricevimento di ACTION_PACKAGE_ADDED
« Risposta #1 il: 21 Settembre 2012, 07:53:56 CEST »
0
a questo punto vorrei che la mia applicazione estraesse i seguenti valori:

Application Name
Package Name
Activity Name

che mi serviranno per andare a inserire un record nel DB delle applicazioni installate.

Sono certo che è una stupidaggine, ma non ne vengo proprio a capo.
Mi sapreste indicare come fare.
ho provato varie strade, ma nessuna ha funzionato.

Si parte di qua PackageManager | Android Developers

e per esempio usi public abstract List<ApplicationInfo> getInstalledApplications (int flags)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:Informazioni dall'intent al ricevimento di ACTION_PACKAGE_ADDED
« Risposta #2 il: 21 Settembre 2012, 08:53:35 CEST »
+1
Prova così:

Codice (Java): [Seleziona]
public void onReceive(Context context, Intent intent) {

                String packageName, applicationName, activityName;
                ApplicationInfo ai;

                PackageManager packageManager = context.getPackageManager();
                packageName = intent.getComponent().getPackageName();

                try {
                        ai = packageManager.getApplicationInfo(packageName, 0);
                } catch (final NameNotFoundException e) {
                        ai = null;
                }
                applicationName = (String) (ai != null ? packageManager.getApplicationLabel(ai) : "(unknown)");

                activityName = intent.getComponent().getShortClassName();

                String message = "Application Name: " + applicationName + "\nPackage Name: " + packageName + "\nMain Activity Name: " + activityName;

                Log.d("onReceive: ", message);
        }
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Re:Informazioni dall'intent al ricevimento di ACTION_PACKAGE_ADDED
« Risposta #3 il: 21 Settembre 2012, 18:13:57 CEST »
0
Grazie demper, ho risolto...
L'approccio che avevo seguito era più o meno uguale, ma evidentemente commettevo un errore.

Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Re:Informazioni dall'intent al ricevimento di ACTION_PACKAGE_ADDED
« Risposta #4 il: 21 Settembre 2012, 22:29:55 CEST »
0
Riapro il topic perché purtroppo ancora non siamo arrivati alla soluzione.
Sembrerebbe funzionare, ma in realtà  non è cosi, infatti i dati estratti non sono quelli relativi all'applicazione installata, ma sono quelli dell'applicazione che genera il messaggio ACTION_PACKAGE_ADDED.

Mi rimetto al lavoro partendo da dove erravamo arrivati.
Grazie comunque per l'aiuto e se avessi altri suggerimenti te ne sarei grato.
Ciao, Manuel.

Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Re:Informazioni dall'intent al ricevimento di ACTION_PACKAGE_ADDED
« Risposta #5 il: 22 Settembre 2012, 18:48:55 CEST »
0
Risolto in questo modo:

Codice: [Seleziona]
               
                if (act.equalsIgnoreCase(Intent.ACTION_PACKAGE_ADDED) | act.equalsIgnoreCase(Intent.ACTION_PACKAGE_INSTALL))
                {                       
                    PackageManager         pm;
                    String                         appName = "";
                String                         pkgName = "";
                String                        actName = "";
               
                Intent                         intent         = new Intent(Intent.ACTION_MAIN, null);
                                                intent.setPackage(_intent.getDataString().substring(8));
                                                intent.addCategory(Intent.CATEGORY_LAUNCHER);
               
                // Lista delle applicazioni
                pm = _context.getPackageManager();


                List<ResolveInfo> pkgAppsList = pm.queryIntentActivities(intent, 0);

                Log.i("testmanuel", "pkgAppsList SIZE: " + pkgAppsList.size());

                if (pkgAppsList.size() > 0){
                        for(int i=0; i<pkgAppsList.size();i++)
                        {
                                ResolveInfo app = pkgAppsList.get(i);
                       
                                appName = (String) app.loadLabel(pm);
                                pkgName = (String) app.activityInfo.packageName ;
                                actName = (String) app.activityInfo.name;
                   
                                Log.i("testmanuel", "appName: " + appName);
                                Log.i("testmanuel", "pkgName: " + pkgName);
                                Log.i("testmanuel", "actName: " + actName);
                        }
                }

anche se ho riscontrato un problema nello specifico con l'applicazione Google+
Ovvero, quando vado a ripescare dal DB il pacchetto per creare l'intent e lanciare il programma, mi genera un errore.
Appena risolvo farò sapere.

Ciao.