2010-10-01 11 views
4

Je suis en train de faire une application qui ouvre la page du marché android de l'application sélectionnée & permet à l'utilisateur de le télécharger.J'ai utilisé ci-dessous l'intention d'ouvrir le marché.android: réponse de l'activité du marché

Intent intent = new Intent (Intent.ACTION_VIEW); 
    intent.setData (Uri.parse ("market://details?id=" + PackageName)); 
    intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivityForResult (intent, 13); 

mais je reçois toujours resultcode 0 en dit onActivityResult.StackTrace:

I/ActivityManager( 79): Starting activity: Intent { act=android.intent.action.VIEW dat=market://details?id=com.google.android.apps.unveil flg=0x10000000 cmp=com.an 
droid.vending/.AssetInfoActivity } 
W/ActivityManager( 79): Activity is launching as a new task, so cancelling activity result. 

Ce que je veux est que le marché me retourne une réponse que l'utilisateur téléchargé l'application ou tout simplement annulé.

EDIT: Je @CommonsWare essaie d'accéder paquet supplémentaire ici, mais ne peux pas comprendre ce qui devrait être la clé pour obtenir de packagename extras de ACTION_PACKAGE_ADDED

public class ServiceReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    //Do this when the system sends the intent 
    Bundle b = intent.getExtras(); 
    String packagename = b.get(?); //cant figure what should be key to get packagename //from extras 
    } 

} 
+0

Je crois que vous rechercheriez 'requestCode' et non' resultCode' dans la méthode 'onActivityResult' – binnyb

Répondre

6

L'Android Market est pas configuré pour soutenir startActivityForResult(). De plus, gardez à l'esprit que le téléchargement et l'installation se font de manière asynchrone (c'est-à-dire que l'utilisateur clique sur Installer et que le téléchargement se fait en arrière-plan et finit l'installation via le Notification).

+0

Est-ce que cela signifie qu'il n'y a pas d'autre moyen d'obtenir l'application actuellement installée que d'interroger chaque liste installée à chaque fois sur PACKAGE_ADDED? – 100rabh

+0

@Saurabh: Il y a des extras dans la diffusion 'ACTION_PACKAGE_ADDED' qui vous aideront à identifier ce qui a été ajouté. – CommonsWare

+0

J'ai suivi ce poste pour obtenir des extras http://stackoverflow.com/questions/1990855/android-how-to-get-location-information-from-intent-bundle-extras-when-using-loc mais ne parviennent pas à obtenir la clé pour Packagename.Voir le message édité ci-dessus. – 100rabh

3

@CommonsWare Superbe!

Votre solution se sont révélées utiles & il m'a aussi atterri à une autre très Page utile http://devdaily.com/java/jwarehouse/android/core/java/com/android/internal/content/PackageMonitor.java.shtml

Ci-dessous un extrait de code de dessus d'une source de lien pour obtenir le nom du paquet d'application installée de l'intention de diffusion:

String getPackageName(Intent intent) { 
     Uri uri = intent.getData(); 
     String pkg = uri != null ? uri.getSchemeSpecificPart() : null; 
     return pkg; 
    } 

Merci Commons.

Questions connexes