2017-08-05 2 views
0

Salut les gars, je suis en train d'afficher tous doc, docx, pdf, xls, txt dans une liste de lecture de mon téléphone. donc pour les débutants, j'ai essayé this à mettre en œuvre sur mon application, mais en quelque sorte im ayant une erreur sur cette ligne ContentResolver cr = context.getContentResolver();comment afficher doc, docx, pdf, xls, txt de stockage dans listview dans Android

edit: merci de répondre CommonsWare. maintenant je suis un problème avec cette ligne newVVI.mimeType = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.MIME_TYPE + "=?"));

et c'est mon code

Uri uri = MediaStore.Files.getContentUri("external"); 

    String[] projection ={ MediaStore.Files.FileColumns._ID, 
      MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.TITLE} ; 

    String selectionMimeType = MediaStore.Files.FileColumns.MIME_TYPE + "=?"; 
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf"); 
    String[] selectionArgsPdf = new String[]{ mimeType }; 
    String sortOrder = null; 

    Cursor allPdfFiles = getContentResolver().query(uri, projection, selectionMimeType, selectionArgsPdf, sortOrder); 


    if (allPdfFiles.moveToFirst()) { 
     do { 

      ImageViewInfo newVVI = new ImageViewInfo(); 
      int id = allPdfFiles.getInt(allPdfFiles.getColumnIndex(MediaStore.Files.FileColumns._ID)); 


      newVVI.filePath = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA)); 
      newVVI.title = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE)); 
      newVVI.mimeType = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.MIME_TYPE + "=?")); 
      ImageRows.add(newVVI); 
     } while (cursor.moveToNext()); 


     allPdfFiles.close(); } 

Suis-je le fais bien? Aidez-moi, s'il vous plaît. Comment puis-je interroger plusieurs fichiers spécifiés comme docs, docx, xls, txt?

afin que je puisse le lister avec pdf.

Merci d'avance!

+0

Ne modifiez pas votre question de la remplacer par une autre question. Utilisez le bouton "Poser une question" pour poser une question différente. – CommonsWare

+0

désolé pour cela, bien techniquement je viens de mettre à jour mon poste et il y a encore une question qui n'a pas de réponse. mais merci frère je vais garder cela à l'esprit la prochaine fois :) – asgardwin7

Répondre

0

Cette syntaxe est incorrecte car vous essayez d'obtenir la colonne renvoyée comme indiqué dans votre projection. Assurez-vous que votre projection liste les colonnes que vous voulez. Pensez-y comme une feuille de calcul où chaque colonne représente un autre attribut des données. Votre boucle while do fonctionne alors efficacement chaque rangée, tandis que vous demandez pour chaque élément de cette rangée.

incorrect:

allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(Medi‌​aStore.Files.FileCol‌​umns.MIME_TYPE + "=?")); 

correct:

 String[] projection ={ MediaStore.Files.FileColumns._ID, 
     MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.TITLE, MediaStore.Files.FileColumns.MIME_TYPE} ; 

et

newVVI.filePath = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA)); 
     newVVI.title = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE)); 
     newVVI.mimeType = allPdfFiles.getString(allPdfFiles.getColumnIndexOrThrow(MediaStore.Files.FileColumns.MIME_TYPE)); 
+0

Merci! cela fonctionne pour moi, merci de corriger ma syntaxe :) – asgardwin7

+0

savez-vous comment puis-je interroger d'autres extensions de fichiers comme docx, pptx, xlsx? – asgardwin7

+0

essayez le type mime "text/*" – Theo

0
Context context = null; 

Votre première ligne fixe context à null.

ContentResolver cr = context.getContentResolver(); 

Votre deuxième résultats en ligne dans un NullPointerException, comme vous essayez d'appeler getContentResolver() sur un nullContext.

Vous avez besoin d'un Context réel, tel que votre Activity ou Service.

+0

merci de répondre! J'ai édité mon message et maintenant j'ai une erreur dans cette ligne 'newVVI.mimeType = allPdfFiles.getString (allPdfFiles.getColumnIndexOrThrow (MediaStore.Files.FileColumns.MIME_TYPE +" =? "));' – asgardwin7