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í
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 🙂