2012-02-28 17 views
6

Ahora estoy trabajando en una aplicación. A través de mi aplicación, los usuarios pueden leer archivos PDF y si el lector de PDF no está allí, entonces mi aplicación lo instalará automáticamente desde el sitio. Este es el código que utilicé para leer el archivo pdf.cómo descargar adobe reader programáticamente si no existe

File file = new File("/sdcard/sample.pdf"); 
PackageManager packageManager = getPackageManager(); 
Intent testIntent = new Intent(Intent.ACTION_VIEW); 
testIntent.setType("application/pdf"); 
List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY); 
if (list.size() > 0 && file.isFile()) { 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    Uri uri = Uri.fromFile(file); 
    intent.setDataAndType(uri, "application/pdf"); 
    startActivity(intent); 
} 

Mis dudas son:

  1. ¿Cómo comprobar que hay un lector de adobe instalado en el teléfono o no?
  2. ¿Cómo instalar programáticamente el adobe reader en un teléfono?

Respuesta

19

Desde su código de alguna complicación ..

utilizar este código,

Intent intent; 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(file, "application/pdf"); 
     try { 
      startActivity(intent); 
     } catch (ActivityNotFoundException e) { 
      // No application to view, ask to download one 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("No Application Found"); 
      builder.setMessage("Download one from Android Market?"); 
      builder.setPositiveButton("Yes, Please", 
        new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          Intent marketIntent = new Intent(Intent.ACTION_VIEW); 
          marketIntent 
            .setData(Uri 
              .parse("market://details?id=com.adobe.reader")); 
          startActivity(marketIntent); 
         } 
        }); 
      builder.setNegativeButton("No, Thanks", null); 
      builder.create().show(); 
     } 
    } 
+0

muchas gracias ..... probé tu código en emulater ... ese cuadro de diálogo de alerta llegó .y presioné "ok", entonces da una excepción ... lo que piensas ... es porque probé en emuladores ... ¿Funcionará en el teléfono? – sarath

+0

esta es la manera en que lo he hecho anteriormente – TerryProbert

+0

@sarath el emulador no viene con la aplicación del mercado, vea http://stackoverflow.com/questions/3994923/no-marketplace-application-on-the-android-emulator – TerryProbert

2

Creo que esto puede ayudarle a:

private void loadDocInReader(String doc) throws ActivityNotFoundException, Exception { 

try { 
    Intent intent = new Intent(); 

    intent.setPackage("com.adobe.reader"); 
    intent.setDataAndType(Uri.parse(doc), "application/pdf"); 

    startActivity(intent); 

} 

catch (ActivityNotFoundException activityNotFoundException) { 
      activityNotFoundException.printStackTrace(); 

      throw activityNotFoundException; 
} 
catch (Exception otherException) { 
      otherException.printStackTrace(); 

      throw otherException; 
} 
} 

Si el lector de Adobe no se ha instalado puede arrastrar usuario a esta url:

https://market.android.com/details?id=com.adobe.reader

Esto abrirá Adobe Reader en la aplicación móvil Android Market. Si los usuarios lo desean, pueden instalarlo.

Cuestiones relacionadas