0

私は現在、私が解決するのを手伝ってほしい問題に苦しんでいます...基本的に私はこの方法で電話の内部ギャラリーからいくつかの画像を取得しようとしています

インテントインテント=newIntent();

intent.setType( "image / *");

intent.setAction(Intent.ACTION_GET_CONTENT);

startActivityForResult(Intent.createChooser(intent、 "画像の選択")、SELECT_IMAGE);

しかし、これを使用してonActivityResultメソッドでURIを取得すると

Uri images_uri = data.getData();

データが空です(画像がSDカードからフェッチされた場合、これは発生しません)

どうすれば解決できますか?

さらに、二次的な問題として、どうすれば複数の画像を取得できますか?ACTION_SEND_MULTIPLEの使用について読みましたが、これにより、画像をフェッチする場所ではなく、メソッドを送信するための選択肢が開かれます...

前もって感謝します

4

2 に答える 2

0

これを試して

    public static final int GALLERY_CODE = 322;
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"),
            GALLERY_CODE);


         @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { //Assinging on corresponding import
    super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == GALLERY_CODE && resultCode == RESULT_OK) {
        Uri selectedImageUri = data.getData();
        selectedImagePath = getPath(selectedImageUri);
        try {
            //add logic for coping file
        } catch (Exception e) {
            e.printStackTrace();
        }
       }

    }

    public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
于 2012-04-26T10:57:25.960 に答える
0

ええと、私の場合、それは実際には欠陥のあるキャッシュリストでした(ギャラリーには実際には存在しない写真が表示されていたので、それらを選択すると、実際のURIはゼロであることがわかりました)。

ACTION_GET_CONTENTインテントを呼び出す前に、次のコマンドを追加することをお勧めします。

 sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

これにより、ギャラリーにデータを更新するように指示されます。これを行う場合は、スレッドで短時間スリープするように注意してください(例:

  Thread.sleep(1000);

)。これにより、実際に開く前に更新アクションを終了できるようになります。私の電話では、少なくとも、それはギャラリーアプリの短いフラッシュを防いだ。

于 2012-09-09T01:45:40.617 に答える