2017-02-16 8 views
0

(私は英語で間違いを犯すと謝罪します) 私はタイトルと同じことをする必要があります ギャラリーからイメージを取得する方法しか知りません。ギャラリーからイメージを取得し、名前を取得し、内部メモリに保存し、そのイメージのルートを取得する方法

(それが間違っているか、それは非効率的である場合は私に知らせてください)

private final int SELECT_PICTURE = 200; 

btnAddImage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent galeryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      galeryIntent.setType("image/*"); 
      startActivityForResult(galeryIntent.createChooser(galeryIntent, "Sececiona Imagen"), SELECT_PICTURE); 
     } 
    }); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode){ 
     case (SELECT_PICTURE): 
      if(requestCode == RESULT_OK){ 
       Uri path = data.getData(); 
       } 
      } 
      break; 
    } 
} 

しかし、私はから捉えた画像の名前を取得する方法がわからない:私はこれが正しいと思いますギャラリーと私のアプリの内部メモリにその名前を腐らせて保存します。 次に、 "MyAPP/media/..."のような画像のルートが必要です。英語の正しい名前がわからず、データベースに保存します(データベースに保存するのは簡単です)。私のプロジェクトでそれを使用してください

私はこれは長いメッセージですが、私はあなたの助けが必要だと知っているStackOverflowのスペインフォーラム誰かが私に答えたので。

答えて

0

onActivityResult:ファイルの名前を得ている方法である

String path = getPath(getApplicationContext(), data.getData());  
File mFile = new File(id); 
mFile.getName(); 

そしてある、getPath:

public static String getPath(final Context context, final Uri uri) { 

    final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; 

    if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { 
     if (isExternalStorageDocument(uri)) { 
      final String docId = DocumentsContract.getDocumentId(uri); 
      final String[] split = docId.split(":"); 
      final String type = split[0]; 

      Log.d("Lucas","TYPE => "+type); 

      if ("primary".equalsIgnoreCase(type)) { 
       return Environment.getExternalStorageDirectory() + "/" + split[1]; 
      } 
     } else if (isDownloadsDocument(uri)) { 

      final String id = DocumentsContract.getDocumentId(uri); 
      final Uri contentUri = ContentUris.withAppendedId(
        Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); 

      return getDataColumn(context, contentUri, null, null); 
     } else if (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.Images.Media.EXTERNAL_CONTENT_URI; 
      } else if ("video".equals(type)) { 
       contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
      } else if ("audio".equals(type)) { 
       contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
      } 

      final String selection = "_id=?"; 
      final String[] selectionArgs = new String[] { 
        split[1] 
      }; 

      return getDataColumn(context, contentUri, selection, selectionArgs); 
     } 
    } else if ("content".equalsIgnoreCase(uri.getScheme())) { 
     return getDataColumn(context, uri, null, null); 
    } else if ("file".equalsIgnoreCase(uri.getScheme())) { 
     return uri.getPath(); 
    } 

    return null; 
} 

public 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; 
} 

public static boolean isExternalStorageDocument(Uri uri) { 
    return "com.android.externalstorage.documents".equals(uri.getAuthority()); 
} 

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

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

@Isca Androidはこう述べています。解決できない方法である、getPath() – ProRiderZ115

+0

@ ProRiderZ115は申し訳ありませんが、ここにある、getPath方法:) – lsca

+0

@Iscaビルド解決できないとisDocumentUriとgetDocumentIDがで下線が引かれています赤の (多くのthxのurヘルプのため) – ProRiderZ115

関連する問題