私のアプリには、(アプリ内から) ギャラリーを開き、写真を選択してアップロードするのに適したコードがいくつかあります。
ギャラリーの「共有」ボタンによって生成されるものなど、EXTRA_STREAM が添付されたインテントの処理を統合するための公正な試みを行いました。
これは私の Droid X で動作し、エミュレーターでも動作します。
今日、ユーザーからエラー レポートを受け取りました。EXTRA_STREAM パラメーターで参照されているリソースを返すように要求すると、MediaStore から写真を取り出すために使用したカーソルが null を返しました。コードは、インテントに EXTRA_STREAM が添付されていることを確認した時点をすでに通過しており、ユーザーはギャラリーの「共有」オプションを使用していると私に言いました。
彼らのデバイスは次のとおりです。
OS バージョン: 2.3.3(10/GRI40) デバイス: HTC PG86100
何を与える?
HTC ギャラリーが、アクセスできない EXTRA_STREAM を含むインテントを送信するのはなぜですか?
カーソルが null を返す他の理由はありますか?
String[] filePathColumn = {MediaColumns.DATA};
Uri selectedImageUri;
//Selected image returned from another activity
if(fromData){
selectedImageUri = imageReturnedIntent.getData();
} else {
//Selected image returned from SEND intent
// This is the case that I'm having a problem with.
// fromData is set in the code that calls this;
// false if we've been called from an Intent that has an
// EXTRA_STREAM
selectedImageUri = (Uri)getIntent().getExtras().get(Intent.EXTRA_STREAM);
}
Cursor cursor = getContentResolver().query(selectedImageUri, filePathColumn, null, null, null);
cursor.moveToFirst(); // <-- NPE on this line