File path return null immer in lollipop android

Dies ist mein Code, wenn ich das Bild vom internen Speicher (Galerie) bekomme. In lollipop file path return immer null.

if (requestCode == PICK_IMAGE) { if(resultCode == RESULT_OK){ //image successfully picked // launching upload activity Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); cursor.moveToFirst(); columnindex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); file_path = cursor.getString(columnindex); Log.d(getClass().getName(), "file_path"+file_path); fileUri = Uri.parse("file://" + file_path); cursor.close(); launchUploadActivity(true, PICK_IMAGE); }else if (resultCode == RESULT_CANCELED) { // user cancelled recording Toast.makeText(getApplicationContext(),"User cancelled image selection", Toast.LENGTH_SHORT).show(); } else { // failed to record video Toast.makeText(getApplicationContext(),"Sorry! failed to pick image", Toast.LENGTH_SHORT).show(); } 

  • Overriding onContextItemSelected () in ActionBarSherlock
  • Optionale Methode in Java Interface
  • Wie kann ich das Bild von der Galerie in android hochladen?
  • Sind Android AlarmManagers weiterhin nach einer App-Aktualisierung ausgeführt?
  • SharedPreferences liest alte Werte
  • Wie wird benachrichtigt, wenn Aktivität / Task in Android geändert wird
  • Wie programmgesteuert WiFi-Konfiguration auf Android 6 (M) ändern?
  • Verwenden von Picasso mit Image Getter
  • Fehler bei der Phonegap-Anwendung: Ungedecktes Modul cordova / plugin_list bereits definiert
  • Android SMS API
  • Was ist der Zweck von "android.intent.category.DEFAULT"?
  • Android: Verwenden Sie Debugmode in Galaxy S2
  • 4 Solutions collect form web for “File path return null immer in lollipop android”

    Thanx alle, fand ich die Lösung.

      Uri selectedImage = data.getData(); String wholeID = DocumentsContract.getDocumentId(selectedImage); // Split at colon, use second item in the array String id = wholeID.split(":")[1]; String[] column = { MediaStore.Images.Media.DATA }; // where id is equal to String sel = MediaStore.Images.Media._ID + "=?"; Cursor cursor = getContentResolver(). query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel, new String[]{ id }, null); String filePath = ""; int columnIndex = cursor.getColumnIndex(column[0]); if (cursor.moveToFirst()) { filePath = cursor.getString(columnIndex); } cursor.close(); setImageFromIntent(filePath); 

    Berechtigung zu deinem Manifest hinzufügen –

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

    Sie müssen die Leseberechtigung definieren, bevor Sie irgendwelche Inhalte lesen.

    BEARBEITET

    Aktualisieren Sie Ihren Code –

      Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); columnindex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); file_path = cursor.getString(columnindex); Log.d(getClass().getName(), "file_path"+file_path); fileUri = Uri.parse("file://" + file_path); cursor.close(); launchUploadActivity(true, PICK_IMAGE); 

    Also hier, wenn irgendeine Ausnahme, wenn man Daten vom Cursor bekommt, dann wirft es eine Ausnahme aus.

    Lollipop beschloss, einen weiteren Kurs zu nehmen, um Dateien aus dem System zu bekommen. (Manche sagen, es kommt von KitKat, aber ich habe es noch nicht auf KitKat getroffen). Der Code unten ist, um den Dateipfad auf Lutscher zu bekommen

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && isMediaDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; Uri contentUri = null; if ("image".equals(type)) { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } final String selection = "_id=?"; final String[] selectionArgs = new String[] { split[1] }; String filePath = getDataColumn(context, contentUri, selection, selectionArgs); } 

    IsMediaDocument:

     public static boolean isMediaDocument(Uri uri) { return "com.android.providers.media.documents".equals(uri.getAuthority()); } 

    GetDataColumn:

     private static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { Cursor cursor = null; final String column = "_data"; final String[] projection = { column }; try { cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); if (cursor != null && cursor.moveToFirst()) { final int column_index = cursor.getColumnIndexOrThrow(column); return cursor.getString(column_index); } } finally { if (cursor != null) cursor.close(); } return null; } 

    Wenn Sie noch Probleme haben, ist dies die volle Antwort, die auf Bilder, Audio, Video, Dateien, etc. überprüft.

     ///////////////////create file obj: private File mFileTemp; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { mFileTemp = new File(Environment.getExternalStorageDirectory(), InternalStorageContentProvider.TEMP_PHOTO_FILE_NAME); } else { mFileTemp = new File(getFilesDir(), InternalStorageContentProvider.TEMP_PHOTO_FILE_NAME); } /////////////////// use in start activity for result try { InputStream inputStream = getContentResolver().openInputStream(data.getData()); FileOutputStream fileOutputStream = new FileOutputStream(mFileTemp); copyStream(inputStream, fileOutputStream); fileOutputStream.close(); inputStream.close(); imagepath = mFileTemp.getPath(); } catch (Exception e) { Log.e("TAG", "Error while creating temp file", e); } ///////////////// public static void copyStream(InputStream input, OutputStream output) throws IOException { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = input.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); } } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.