これはこれまでよりもはるかに簡単なはずです...しかし、私はURIからイメージのフルパスを取得しようとしています。MediaStoreがNULLを返す
String[] projection = { MediaStore.MediaColumns.DISPLAY_NAME};
は正しくファイルの名前が表示されますが:
String[] projection = { MediaStore.MediaColumns.DATA};
か...
String[] projection = { MediaStore.Images.Media.DATA};
...私だけNULLを与えるだろう。
多分私はあまりにも疲れていて、まっすぐ考えていないかもしれませんが(これははるかに大きなアプリケーションの非常に小さな部分です)、画像がはっきりしていればそれがどうなるかは分かりません。うまく動作し、表示名が機能します。私は何かが簡単に行方不明になっていると確信しています...私は現時点でそれを見ることはできません。
完全なコードは以下の通りです:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
Uri selectedImageUri = null;
if (data != null) {
selectedImageUri = data.getData();
String[] projection = { MediaStore.MediaColumns.DISPLAY_NAME};
ContentResolver cr = this.getApplicationContext().getContentResolver();
Cursor metaCursor = cr.query(selectedImageUri,
projection, null, null, null);
metaCursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
if (metaCursor != null) {
try {
if (metaCursor.moveToFirst()) {
imagepath = metaCursor.getString(0);
Log.i(TAG, "UriB: " + metaCursor.getString(0));
}
} finally {
metaCursor.close();
}
}
Log.i(TAG, "Uri: " + selectedImageUri.toString());
}
try {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImageUri));
imageview.setImageBitmap(bitmap);
messageText.setText("Uploading file path: " + imagepath);
} catch (IOException ie) {
messageText.setText("Error");
}
}
}
のAndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jon.bon" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DisplayMessageActivity" >
</activity>
</application>
私は今、約7それらのオープンを持っているので、この上のページがたくさんあるけど、私なぜ私が立ち往生しているのか分からない。
EDIT
私はEXTERNAL_CONTENT_URIを使用する必要がありますように見えます。私はこれを行うときには:
Cursor metaCursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, null);
を...私は関係なく、私はで動作するようにしようと何をイメージいくつかの(実際には1つの非常に具体的な...よく)完全にランダムなパスを取得していません。それはまったく関連していないようです。
アンドロイドの許可を処理しましたか? – muazhud
@muazhudはい。外部読み書き用。あなたの投稿を更新しました –
あなたの投稿を更新しました –