Question

Je suis en train de faire une application qui ouvre la page de Android Market d'application sélectionnée et permet de télécharger utilisateur it.I ont utilisé ci-dessous l'intention de 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 les rendements du marché me une réponse que l'utilisateur téléchargé l'application ou tout simplement annulée.

EDIT: @CommonsWare Je suis en train de paquet ajouté d'accès ici, mais la figure ne peux pas 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
    }

}
Était-ce utile?

La solution

L'Android Market est pas configuré pour soutenir startActivityForResult(). Aussi, gardez à l'esprit que le téléchargement et l'installation se produisent de manière asynchrone (à savoir, l'utilisateur clique sur Installer, le téléchargement se produit en arrière-plan, et ils ont fini l'installation via le Notification).

Autres conseils

@CommonsWare Superbe!

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

Voici un extrait de code de source de lien ci-dessus pour obtenir le nom du package de l'application installée de diffusion intention:

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

Merci Commonsware.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top