2017-04-20 92 views
0

我想創建一個應用程序可以從圖庫中選擇照片。這是我使用的代碼如何從三星畫廊挑選圖片

Intent photo_pick = new Intent(Intent.ACTION_PICK); 
photo_pick.setType("image/*"); 
startActivityForResult(photo_pick , PICK_PHOTO_INTENT); 

這段代碼我試過了,它在小米,華爲手機上工作。但是,當它在三星工作時返回的路徑是錯誤路徑無法獲取照片。

如何提高它讓三星手機也能工作?

+0

'它返回的路徑是錯誤路徑。請舉一個這樣的'路徑'的例子。顯示你的代碼,以便我們可以看到'路徑'的含義。 – greenapps

+0

path return>「content:// media/external/images/media/24」但正確的路徑應該像這樣返回「/ storage/emulated/0/Pictures/Screenshots/Screenshot_2017-04-06-01-45- 03.png「 –

+0

你得到一個內容方案路徑,但你想要一個文件系統路徑。沒有理由要這樣做。嘗試與內容方案一起生活。現代在這裏你可以用它做所有事情。你沒有告訴你爲什麼你需要一個文件系統路徑。你沒有。 – greenapps

回答

1

請查看以下選擇從畫廊的照片碼,

private static final int REQUEST_PROFILE_ALBUM = 1; 


Intent int_album = new Intent(Intent.ACTION_PICK); 
int_album.setType("image/*"); 
int_album.putExtra(MediaStore.EXTRA_OUTPUT, img_url); 
startActivityForResult(int_album, REQUEST_PROFILE_ALBUM); 

被稱爲選擇圖片onActivityResult後,

if (requestCode == REQUEST_PROFILE_ALBUM && resultCode == Activity.RESULT_OK && data != null) { 
     Uri selectedImage = data.getData(); 
     String[] projection = {MediaStore.Images.Media.DATA}; 
     Cursor cursor = activity.getContentResolver().query(selectedImage, projection, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(projection[0]); 
     String picturePath = cursor.getString(columnIndex); 
} 
0

試試這個代碼:

Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    if (intent.resolveActivity(getPackageManager()) != null) { 
      // Bring up gallery to select a photo 
      startActivityForResult(intent, 2); 
     }else{ 
      Toast.makeText(UserProfileActivity.this,"No Gallery app found!", Toast.LENGTH_SHORT).show(); 
     } 
+0

謝謝,但這不起作用 –

0

選擇像圖像這

private void showFileChooser() { 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
    } 

一旦你選擇一個圖像onActivityResult自動

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 

    } 
} 
+0

謝謝,但這與我使用的代碼相同,並且這在samsung rom中不起作用 –

0

稱爲試試這個它可以幫助你:

Button btn_selectimage = (Button) findViewById(R.id.btn_selectimage); 

btn_selectimage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       img_capture.setVisibility(View.VISIBLE); 
       Intent intent = new Intent(); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
      } 
     }); 

規範XML:

<Button 
     android:id="@+id/btn_selectimage" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Select Picture"/> 
0

爲了執行下面的代碼,只有在android版本的情況下才需要獲得請求許可sion高於lolipop

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
photoPickerIntent.setType("image/*"); 
startActivityForResult(photoPickerIntent, 500);