1voto

Error al llamar un paquete desde la Play Store

Hola, en mi pregunta anterior hacía referencia de implementar Barcode sin usar otra app.

He decidido haceelo de las 2 maneras: Dentro de la app implementado y haciendo uso de una tercera aplicación.

Para eso necesita checa si está instalada la app, si no lo está, debe de mandar a la Play Store para descargarla, lo tengo así:

package com.appco.sample_projecta;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Context co;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Método Probar()", Toast.LENGTH_LONG).show();
                probar();
            }
        });

    }

public void probar() {
   boolean installed = appInstalledOrNot("com.google.zxing.client.android");
    if (installed) {
        /*Revisa si está instalado*/
        Intent LaunchIntent = getPackageManager()
                .getLaunchIntentForPackage("com.google.zxing.client.android");
        startActivity(LaunchIntent);

        Toast.makeText(this, "Si está instalado", Toast.LENGTH_LONG).show();
    } else {
        System.out.println("No");
        Toast.makeText(this, "No está instalado", Toast.LENGTH_LONG).show();
        aaa();
    }

}
    private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        boolean app_installed;
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        }
        catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed;
    }

 //Aquí abre la Play Store para descargar, pero no me funciona :(
        private void aaa(){

            final String appPackageName = getPackageName(); 
            try {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
            } catch (android.content.ActivityNotFoundException anfe) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
            }
        }

    }

Al momento entrar a la playstore dice: "No se encontró el elemento, intentar nuevamente".

Si me pueden ayudar a mejorar el código o alguna sugerencia, muchas gracias.

0voto

x4mp73r comentado

Ya eh resuelto el problema, que tonto, es muy simple, a continuación lo correcto:

 private void aaa(){

            final String appPackageName = "com.google.zxing.client.android"; // Aquí hay que colocar el package de la app que quieran
            try {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
            } catch (android.content.ActivityNotFoundException anfe) {
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
            }
        }

Igual sirve para los que tengan alguna duda, aquí va estar publicado la solución.

1 Respuesta

1voto

AdanCervera Puntos2360

Una vez vi una libreria no se si es para generar o leer codigos de barras te paso la liga
https://android-arsenal.com/details/1/55

checala igual te sirve, no he tenido tiempo de probarla pero igual te paso el dato esperando sea de ayuda.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta