【Android】【Unity】ギャラリーから画像を持ってきたい その2
さて前回の続きです。
前回はこちら。
今回は、開いたギャラリーから画像のパスを習得してみましょう。
マニュフェストファイルにパーミッションを追加します。
AndroidStudio
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sample.samplegame.lib"> <application android:allowBackup="true" android:label="@string/app_name" android:supportsRtl="true"> <activity android:name=".GalleryActivity"> <intent-filter> <action android:name="androidnativeactions.Gallery" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" /> </manifest>
AndroidStudio
GalleryActivity.java
protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d(TAG, "onActivityResult: " + requestCode + " : " + resultCode); super.onActivityResult(requestCode, resultCode, data); if(resultCode != RESULT_OK) { setResult(resultCode); finish(); return; } switch (requestCode) { case REQUEST_GALLERY_JELLYBEAN_BELOW: // 選択した画像のパスを取得する. String[] strColumns = {MediaStore.Images.Media.DATA }; Cursor crsCursor = getContentResolver().query(data.getData(), strColumns, null, null, null); if(crsCursor.moveToFirst()) { Log.d(" PluginConnector", "REQUEST_GALLERY_JELLYBEAN_BELOW : " + crsCursor.getString(0)); } crsCursor.close(); break; case REQUEST_GALLERY_KITKAT_ABOVE: this.GetSelectedItemPath(data); break; } setResult(resultCode); finish(); } @TargetApi(Build.VERSION_CODES.KITKAT) private void GetSelectedItemPath(Intent data) { // 選択した画像のパスを取得する. String strDocId = DocumentsContract.getDocumentId(data.getData()); String[] strSplittedDocId = strDocId.split(":"); String strId = strSplittedDocId[strSplittedDocId.length - 1]; Cursor crsCursor = getContentResolver().query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI , new String[]{MediaStore.MediaColumns.DATA} , "_id=?" , new String[]{strId} , null); if (crsCursor.moveToFirst()) { Log.d("PluginConnector", "REQUEST_GALLERY_KITKAT_ABOVE : " + crsCursor.getString(0)); } crsCursor.close(); }
参考サイト
mslgt.hatenablog.com
実機で確認するとログに選択したパスが表示されました。
今回はここまでです。