2

以下は私のコードです:

    if(v.getId() == R.id.button2)
    {
        Intent wpIntent = new Intent();
        wpIntent.setType("image/*");
        wpIntent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(wpIntent, "Select Picture"), SELECT_PICTURE);
    }
}

public void onActivityResult(int resultCode, int requestCode, Intent data)
{
    if(resultCode == RESULT_OK)
    {
        if(requestCode == SELECT_PICTURE)
        {
            Uri selectedImage = data.getData();
            selectedImagePath = getPath(selectedImage);
            Toast.makeText(this, ""+selectedImagePath, Toast.LENGTH_SHORT).show();
        }
    }
}

private String getPath(Uri selectedImage)
{
    String[] proj = {MediaStore.Images.Media.DATA};
    cursor = managedQuery(selectedImage, proj, null, null, null);
    int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(columnIndex);
}

この写真の何が問題になっていますか?onActivityResultのトーストは表示されません。これは、これが機能していないことを意味します。

私はここで何が間違っているのですか?

編集:さらにチェックを追加しましたが、if(resultCode == RESULT_OK)がtrueを返さないことがわかりました。どうしてこんなことに?

編集2これは奇妙です。両方の「if」ステートメントを削除すると、プログラムは正常に機能します。適切な画像のURIが生成され、すべてが正常に機能します。しかし、「if」ステートメントがfalseを返す理由はまだわかりません。

4

3 に答える 3

0
Uri selectedImage = data.getData();
selectedImagePath = getPath(selectedImage);

以下のコードを使用して試してください:::

Uri selectedImageuri = Uri.parse(data.getDataString());

このURIで何でもできます(imageviewに設定するか、ビットマップに変換できます)。

于 2012-04-08T16:34:50.193 に答える
0

結果コードは、子アクティビティに問題がある場合は常にresult_cancelledになります。それ以外の場合は、result_okコードがあります。

正しい動作例を確認するには、Androidの組み込みギャラリーアプリからプログラムで画像を取得/選択するをご覧ください...

于 2012-04-08T17:24:07.300 に答える
0

デフォルトでは、結果コードを返すインテントで指定しない場合、ギャラリーは結果コードを返しません。次のようにコードにこのスニペットを追加することで、結果コードを返すインテントで指定できます。

Intent wpIntent = new Intent();
wpIntent.setType("image/*");
wpIntent.setAction(Intent.ACTION_GET_CONTENT);
wpIntent.putExtra("return-data", true); //added snippet
startActivityForResult(Intent.createChooser(wpIntent, "Select Picture"),SELECT_PICTURE);
于 2012-04-19T08:25:42.750 に答える