Android ouvrir fichier pdf
Je suis le développement d'une application Android et je dois ouvrir certains fichiers.
C'est mon code à l'aide d'intention:
public class FacturaActivity extends Activity {
(...)
public void downloadInvoice(View view) {
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/"+ filename);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),"application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
}
}
Fichier est dans le répertoire racine de la carte SD et je peux manuellement l'ouvrir.
Problème
Application est fermée lorsqu'elle arrive à startActivity(intent). Je pense que le problème est dans AndroidManifest.xml fichier, mais je ne sais pas comment faire pour le mettre correctement.
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name="###.MyApplication" > <!--cant show complete name-->
<activity
android:name="###.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>
<activity
android:name=".FacturaActivity" >
</activity>
</application>
LogCat
07-03 15:49:13.094: E/AndroidRuntime(1032): FATAL EXCEPTION: main
07-03 15:49:13.094: E/AndroidRuntime(1032): java.lang.IllegalStateException: Could not execute method of the activity
(...)
07-03 15:49:13.094: E/AndroidRuntime(1032): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/201209_F2012212782.PDF typ=application/pdf flg=0x40000000 }
07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Activity.startActivityForResult(Activity.java:2817)
07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Activity.startActivity(Activity.java:2923)
Pouvez-vous m'aider à compléter AndroidManifest? Ou comment puis-je ouvrir ce fichier pdf?
- il semble que votre Android a pas de n'importe quel lecteur de pdf application installée, ajouter un
- Je peux ouvrir d'autres fichiers pdf les fichiers avec ThinkFree Visionneuse PDF.
- Ce blog permet, si vous essayez d'utiliser
ContentProvider
(qui est maintenant recommandé): blogc.au/2014/03/23/...
Vous devez vous connecter pour publier un commentaire.
Le problème est qu'il n'existe aucune application installée pour gérer l'ouverture du fichier PDF. Vous devez utiliser l'Intention Sélecteur, comme suit:
startActivity(Intent)
oustartActivityForResult(Intent, int)
? Il faudrait que je vois ce que vous faites dansonResume()
ouonActivityResult(int, int, Intent)
. Quelle est l'erreur?Kotlin version ci-dessous (version mise à Jour de @paul-burke réponse: