¿Cómo abrir / mostrar documentos (.pdf, .doc) sin aplicación externa?

Quiero crear un progtwig que abra documentos sin una aplicación externa. Necesito esto, porque quiero desplazar el documento con la orientación de los teléfonos (tono y rollo). Creo un botón en la parte inferior de la pantalla, y cuando presiono el botón, también puedo desplazar el documento. Si suelto el botón, no puedo desplazarme. Entonces, si abro el documento con una aplicación externa, mi botón desaparece y el sensorManager tampoco funciona.

Haga que alguien tenga alguna idea para resolver este problema. ¿O alguien tiene alguna idea, cómo desplazar el documento, abierto en una aplicación externa, con la orientación de mi teléfono?

(Lo siento por mi ingles)

Este es mi manifiesto:

             

Este es mi diseño:

    

Este es mi Código:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); button = (Button) findViewById( R.id.mybutt ); String pdf = "http://www.pc-hardware.hu/PDF/konfig.pdf"; String doc=""; webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setPluginsEnabled(true); webView.getSettings().setAllowFileAccess(true); webView.loadData( doc , "text/html", "UTF-8"); } 

Creo que deberías usar una biblioteca personalizada para hacer eso. Mira esto y esto

Pero hay una manera de mostrar PDF sin llamar a otra aplicación

Esta es una forma de mostrar PDF en la aplicación de Android que está incrustando el documento PDF en la vista web de Android mediante el soporte de http://docs.google.com/viewer

seudo

 String doc=""; 

una muestra se muestra a continuación

  String doc=""; 

Código

  WebView wv = (WebView)findViewById(R.id.webView); wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setPluginsEnabled(true); wv.getSettings().setAllowFileAccess(true); wv.loadUrl(doc); //wv.loadData( doc, "text/html", "UTF-8"); 

y en manifiesto proporcionar

  

Mira esto

Precaución: no tengo conocimiento de problemas de compatibilidad con varias versiones de Android

En este enfoque, el inconveniente es que necesita conectividad a Internet. Pero creo que satisface tu necesidad

EDITAR Prueba esto como src para iframe

 src="http://docs.google.com/gview?embedded=true&url=http://www.pc-hardware.hu/PDF/konfig.pdf" 

prueba wv.loadData( doc , "text/html", "UTF-8"); . Ambos funcionan para mí

enter image description hereenter image description here

Descargue el código fuente desde aquí ( Mostrar archivo PDF dentro de mi aplicación de Android )

Agregue esta dependencia en su grado:

 compile 'com.github.barteksc:android-pdf-viewer:2.0.3' 

activity_main.xml

     

MainActivity.java

 package pdfviewer.pdfviewer; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.provider.OpenableColumns; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import com.github.barteksc.pdfviewer.PDFView; import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener; import com.github.barteksc.pdfviewer.listener.OnPageChangeListener; import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle; import com.shockwave.pdfium.PdfDocument; import java.util.List; public class MainActivity extends Activity implements OnPageChangeListener,OnLoadCompleteListener{ private static final String TAG = MainActivity.class.getSimpleName(); public static final String SAMPLE_FILE = "android_tutorial.pdf"; PDFView pdfView; Integer pageNumber = 0; String pdfFileName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pdfView= (PDFView)findViewById(R.id.pdfView); displayFromAsset(SAMPLE_FILE); } private void displayFromAsset(String assetFileName) { pdfFileName = assetFileName; pdfView.fromAsset(SAMPLE_FILE) .defaultPage(pageNumber) .enableSwipe(true) .swipeHorizontal(false) .onPageChange(this) .enableAnnotationRendering(true) .onLoad(this) .scrollHandle(new DefaultScrollHandle(this)) .load(); } @Override public void onPageChanged(int page, int pageCount) { pageNumber = page; setTitle(String.format("%s %s / %s", pdfFileName, page + 1, pageCount)); } @Override public void loadComplete(int nbPages) { PdfDocument.Meta meta = pdfView.getDocumentMeta(); printBookmarksTree(pdfView.getTableOfContents(), "-"); } public void printBookmarksTree(List tree, String sep) { for (PdfDocument.Bookmark b : tree) { Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx())); if (b.hasChildren()) { printBookmarksTree(b.getChildren(), sep + "-"); } } } } 

¡Gracias!

Bueno, creo que a continuación está la solución

  String doc=""; WebView wv = (WebView)findViewById(R.id.wv); wv.setVisibility(WebView.VISIBLE); wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setAllowFileAccess(true); wv.getSettings().setPluginState(WebSettings.PluginState.ON); wv.setWebViewClient(new Callback()); wv.loadData(doc, "text/html", "UTF-8"); 

Esperando que esto te ayude 🙂