PDA

Ver la Versión Completa : Codigo Qr url a browser


Napster87
07/03/14, 11:45:29
Hola! estoy usando la libreria de zxing para usar su lector de codigos qr.Mi idea es abrir una pagina a partir de una url que obtengo del codigo que genero.Este lo he creado y puse la direccion de una web,aplicando un show se que lee perfectamente la direccion pero al mostrarla se crashea. Estoy haciendo esto:

Intent intent = new Intent("prueba.android.turismo.SCAN");
startActivityForResult(intent, 0);

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contenido = intent.getStringExtra("SCAN_RESULT");
Toast.makeText(getApplicationContext(), "Lectura QR: "+contenido, Toast.LENGTH_LONG).show();
String formato = intent.getStringExtra("SCAN_RESULT_FORMAT");
Intent web = new Intent(Intent.ACTION_VIEW,
Uri.parse(contenido));
startActivity(web);

// Hacer algo con los datos obtenidos.
} else if (resultCode == RESULT_CANCELED) {
// Si se cancelo la captura.
}
}
}

En contenido almaceno la url del codigo qr,pero no consigo abrir el browser de esta manera,alguna sugerencia?se crashea y en el log dice "no activity found to handle intent".
Tengo una activity dedicada a esta parte,es algo tonto pero no logro averiguarlo...

Saludos!!

Manu14s
08/03/14, 02:14:50
Crea una actividad que contenga un webview(en su correspondiente layout claro).en esta actividad webview tendras que ingresar una url. En vez de pasarle una url le pasas el valor de tu variable contenido. En el if ,le metes que inicie esta actividad webview. Es facil, sino sabes como hacerlo ,me lo dices y te lo detallo mas. Un saludo

Napster87
10/03/14, 09:56:55
Gracias por la idea,asi si lo he conseguido hacer funcionar :ok:

Dejo el codigo por si le vale a alguien en un futuro:

public void LectorQR(View v) {

Intent intent = new Intent("prueba.android.turismo.SCAN");
startActivityForResult(intent, 0);

}



public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contenido = intent.getStringExtra("SCAN_RESULT");
String formato = intent.getStringExtra("SCAN_RESULT_FORMAT");
Intent i = new Intent(this, LectorQR.class);
i.putExtra("contenido", contenido);
startActivity(i);

// Hacer algo con los datos obtenidos.
} else if (resultCode == RESULT_CANCELED) {
// Si se cancelo la captura.
}
}
}

Y en clase LectorQR,en oncreate:
[CODE] WebView myWebViewDATOS = (WebView) findViewById(R.id.webViewQR);
myWebViewDATOS.getSettings().setJavaScriptEnabled( true);


/* Prevent WebView from Opening the Browser */
myWebViewDATOS.setWebViewClient(new InsideWebViewClient());
myWebViewDATOS.loadUrl(bundle.getString("contenido"));

}

/* Class that prevents opening the Browser */
private class InsideWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}

Con esto funciona a la perfeccion,espero que le sirva a alguien.Sencillo y eficaz jeje