ver studio puedo online google descargar como chrome celular archivos archivo abrir android pdf external

android - studio - no puedo abrir archivos pdf en mi celular



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

Quiero crear un programa que abra documentos sin una aplicación externa. Necesito esto, porque quiero desplazar el documento con la orientación de los teléfonos (Pitch and Roll). Creo un botón en la parte inferior de la pantalla y cuando mantengo presionado el botón, también puedo desplazar el documento. Si suelto el botón, no puedo desplazarlo. Por lo tanto, si abro el documento con una aplicación externa, mi botón desaparece y el sensorManager no funciona.

Tener a alguien alguna idea para resolver este problema. ¿O alguien tiene alguna idea, cómo desplazar el documento, abrirlo en una aplicación externa, con la orientación de mis teléfonos?

(Lo siento por mi ingles)

Este es mi manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.orientationscrolling" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.orientationscrolling.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

Este es mi diseño:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" android:orientation="vertical" > <Button android:id="@+id/mybutt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="25sp" android:text="Scroll!!" android:layout_gravity="right"/> </LinearLayout>

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="<iframe src=''http://docs.google.com/gview?embedded=true&url=http://www.pc-hardware.hu/PDF/konfig.pdf'' width=''100%'' height=''100%'' style=''border: none;''></iframe>"; 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"); }


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

String doc="<iframe src=''http://docs.google.com/viewer?url=http://www.example.com/yourfile.pdf&embedded=true'' width=''100%'' height=''100%'' style=''border: none;''></iframe>"; 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");

Espero que esto te ayude :)


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

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

Esta es una forma de mostrar PDF en una aplicación de Android que incrusta el documento PDF en Android Webview utilizando el soporte de http://docs.google.com/viewer

seudo

String doc="<iframe src=''http://docs.google.com/viewer?url=+location to your PDF File+'' width=''100%'' height=''100%'' style=''border: none;''></iframe>";

a continuación se muestra una muestra

String doc="<iframe src=''http://docs.google.com/viewer?url=http://www.iasted.org/conferences/formatting/presentations-tips.ppt&embedded=true'' width=''100%'' height=''100%'' style=''border: none;''></iframe>";

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 el manifiesto proporcionar

<uses-permission android:name="android.permission.INTERNET"/>

Ver this

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 Probar esto como src para iframe

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

intente wv.loadData( doc , "text/html", "UTF-8"); . Ambos trabajan para mi


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

<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:layout_width="match_parent" android:layout_height="40dp" android:background="@color/colorPrimaryDark" android:text="View PDF" android:textColor="#ffffff" android:id="@+id/tv_header" android:textSize="18dp" android:gravity="center"></TextView> <com.github.barteksc.pdfviewer.PDFView android:id="@+id/pdfView" android:layout_below="@+id/tv_header" android:layout_width="match_parent" android:layout_height="match_parent"/> </RelativeLayout>

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<PdfDocument.Bookmark> 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!


Las respuestas anteriores que dependen de Google Docs solo funcionarán cuando tenga conexión a Internet. Una mejor opción sería utilizar la clase Android PdfRenderer .

Puedes probar la aplicación de muestra here .