Pergunta

Estou tentando criar um aplicativo que abre a página de mercado do Android do aplicativo selecionado e permite que o usuário faça o download. Eu usei abaixo a intenção de abrir o mercado.

  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);

Mas eu sempre recebo o código de resultado 0 no OnactivityResult.stacktrace diz:

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.

O que eu quero é que o mercado me devolva alguma resposta que o usuário baixou o aplicativo ou apenas cancelou.

EDITAR: @Commonsware Estou tentando acessar o pacote adicionado aqui, mas não consigo imaginar o que deve ser fundamental para obter o nome do packagene de 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
    }

}
Foi útil?

Solução

O mercado Android não está configurado para apoiar startActivityForResult(). Além disso, lembre -se de que o download e a instalação acontecem de forma assíncrona (ou seja, cliques de usuários instalam e o download ocorre em segundo plano, e eles terminam a instalação através do Notification).

Outras dicas

@Commonsware excelente!

Sua solução se mostrou útil e também me levou a outra página muito útil http://devdaily.com/java/jwarehouse/android/core/java/com/android/internal/content/packagemonitor.java.shtml

Abaixo está um snippet de código da fonte de link acima para obter o nome do pacote do aplicativo atualmente instalado da intenção de transmissão:

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

Obrigado Commonsware.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top