2011-05-21 21 views
16

Estoy trabajando en una aplicación en la necesidad de abrir el archivo PDF en el dispositivo,Abrir PDF en la aplicación para Android

que realmente han conseguido el código en la web que es similar a la mayoría de los ejemplos. Pero, el problema es que no puedo abrir el archivo y el control va directamente a la parte "Excepción".

Aquí es el código de abajo:

public class MyPDFDemo extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    Button OpenPDF = (Button) findViewById(R.id.button); 
    OpenPDF.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      File pdfFile = new File("/sdcard/Determine_RGB_Codes_With_Powerpoint [PDF Library].pdf"); 
      if(pdfFile.exists()) 
      { 
       Uri path = Uri.fromFile(pdfFile); 
       Intent pdfIntent = new Intent(Intent.ACTION_VIEW); 
       pdfIntent.setDataAndType(path, "application/pdf"); 
       pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

       try 
       { 
        startActivity(pdfIntent); 
       } 
       catch(ActivityNotFoundException e) 
       { 
        Toast.makeText(MyPDFDemo.this, "No Application available to view pdf", Toast.LENGTH_LONG).show(); 
       } 
      } 

     } 
    }); 

} 

Cuando ejecuto este código: Solía ​​ver "ninguna aplicación disponible para ver pdf". ¿Alguien puede complacerme para ver el archivo pdf?

+2

Por favor, compruebe que el dispositivo debe tener instalado cualquier aplicación de visualización de PDF. –

+0

consulte este enlace: http://stackoverflow.com/a/11591242/874752 –

+0

Consulte el siguiente enlace http://stackoverflow.com/questions/9666030/display-pdf-file-inside-my -android-application/31672568 # 31672568 –

Respuesta

9

Dado que su bloque catch tiene ActivityNotFoundException, significa que no tiene ninguna actividad/aplicación que pueda leer un formato de tipo de archivo 'application/pdf'. Instale cualquier visor de pdf desde Android Market (Adobe lanzó recientemente el suyo), o bien utilice el visor de código abierto de pdf mencionado anteriormente y su problema probablemente será resuelto.

http://code.google.com/p/apv/downloads/list

https://market.android.com/details?id=cx.hell.android.pdfview&feature=search_result

Al iniciar la actividad con sus parametros dados, busca todas las aplicaciones/Actividades/Intentos que están registrados para abrir formato pdf. Como no tiene ninguno en su dispositivo, obtiene la ActivityNotFoundException

2

Su código es correcto, también he usado el mismo código para abrir el archivo pdf dentro de un visor.

Como no tiene un visor instalado en su dispositivo por lo que no se puede abrir sin ningún visor.

Puede instalar Adobe reader para Android.

No puedo abrir el archivo pdf en el emulador, así que tengo que probar usando mi dispositivo.

2

Primero instale el lector de PDF en el dispositivo. que utilizar este código para leer el archivo pdf de la memoria interna.

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    final TextView tv = (TextView)findViewById(R.id.tv); 
    Button bt=(Button)findViewById(R.id.openbtn); 
    bt.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

    File pdfFile = new File(Environment.getExternalStorageDirectory(),"Leave.pdf"); 
    if(pdfFile.exists()) 
    { 
    Uri path = Uri.fromFile(pdfFile); 
    Intent pdfIntent = new Intent(Intent.ACTION_VIEW); 
    pdfIntent.setDataAndType(path, "application/pdf"); 
    pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    try{ 
     startActivity(pdfIntent); 
    }catch(ActivityNotFoundException e){ 
     tv.setText("No Application available to view PDF"); 
    } 
    } 
    else 
    { 
     tv.setText("File not found"); 
    } 

     } 
    }); 

}

Cuestiones relacionadas