2

まず第一に、これは結果コードが時期尚早に返されるという頻繁に投稿される問題ではありません。この場合、アイテムがギャラリーで選択された後にのみ返されます。

私のテスト ケースでは、次のコードでギャラリーを呼び出します。

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,  SELECT_PICTURE);

onActivityResult には次のものがあります。

if (resultCode == Activity.RESULT_OK) {
    if (requestCode == SELECT_PICTURE) {
        Uri selectedImageUri = data.getData();
        pathText.setText(selectedImageUri.getPath());
    }
} else {
    pathText.setText("Result not OK - code is " + resultCode);
}

pathText は、テスト ケースで結果を表示するために入れた単なる TextView です。実際のアプリケーションでは、パスの用途が異なります。

_GET_CONTENT の代わりに ACTION_PICK を使用すると、他の人からすぐに失敗が報告されます。マニフェストに launchMode タグはありません (一部の投稿では、その領域の問題が示唆されています)。

たぶんここに手がかりがあります。Toshiba Thrive では、Gallery、File Manager、または Fish Bowl Photo Gallery を使用すると、このバグは表示されません。Kindle Fire では、Quickoffice も画像パスを正しく返すことができます。このバグは、Kindle のビルトイン ギャラリーでのみ表示されます。このバグは、「Motorola Droid(2.3.4) 、HTC EVO (2.3)」でも確認されました。

これらすべてのデバイスで機能する方法でギャラリーから画像パスを取得するにはどうすればよいですか?

4

3 に答える 3

6

そのアクティビティのマニフェストで launchMode="singleInstance" を設定すると、アクティビティの 1 つで同じ問題が発生しました。その属性を削除すると正常に動作します。

于 2018-01-01T18:33:10.523 に答える
2

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

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

こんにちはスティーブこれは私の壁紙プロジェクトでうまくいくようです

Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_PICTURE);  
于 2012-04-03T22:05:21.660 に答える