2017-01-12 11 views
2

電話ギャラリーで画像を取得し、gridviewで表示したいと考えています。 私はカーソルを使用します。アンドロイド携帯でギャラリーで画像を取得するには?

final String[] columns = {MediaStore.Images.Media.DATA, 
      MediaStore.Images.Media._ID}; 
final String orderBy = MediaStore.Images.Media.DATE_TAKEN + " DESC"; 
Cursor imagecursor = getContentResolver().query(
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, 
      null, orderBy); 

私の携帯電話は、SDカードを持っていない、私はUnfortunately app has stoppedエラーを得ました。 EXTERNAL_CONTENT_URIINTERNAL_CONTENT_URIに変更すると、エラーは発生せず、画像は表示されません。

+1

役立つならば、あなたのアプリがあなたにお奨めのショーをクラッシュされている場合は私に知らせてonActivityResult()

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { if (requestCode == SELECT_FILE) onSelectFromGalleryResult(data); } } private void onSelectFromGalleryResult(Intent data) { if (data != null) { try { bm = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData()); } catch (IOException e) { e.printStackTrace(); } } 

をそれを扱いますスタックトレースはここにあります。 '画像が表示されていません'コードのどの部分に画像が表示されますか? –

+0

私は私の携帯電話にぶつかって、それはマニフェストで既にアンドロイド。許可.READ_EXTERNAL_STORAGEを追加しましたが、許可は拒否しました。だから、私はそれをgoogleし、問題がターゲットSDKだと分かった。私は22の代わりに22に設定しました。ご意見ありがとうございます。 – Jacky

答えて

2

あなたはこの意図を開始することにより、画像を取得することができます:

Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT);// 
    startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_FILE); 

は、それはあなた

+0

すべて動作します。上記のコメントをご覧ください。どうもありがとうございます。 – Jacky

+0

yeah on sdk 24、機能の実際の使用状況に関するランタイム権限を追加する必要があります。ここをクリックしてください: https://developer.android.com/training/permissions/requesting.html あなたのために – Farhan

関連する問題