Reputation: 36654
I'm trying to open the screenshots
photos folder.
private void Try3()
{
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Screenshots");
Log.d("File path ", dir.getPath());
String dirPath=dir.getAbsolutePath();
if(dir.exists() && dir.isDirectory()) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
intent.setData(Uri.fromFile(dir));
Log.d("b4performSpecificCrop_startActivityForResult::", Integer.toString(3));
startActivityForResult(intent, 3);
Log.d("afterperformSpecificCrop_startActivityForResult::", Integer.toString(3));
}
I have this permission in the Manifest:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
and get this from logCat:
10-05 22:17:26.790: E/AndroidRuntime(28347): FATAL EXCEPTION: main
10-05 22:17:26.790: E/AndroidRuntime(28347): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT dat=file:///storage/sdcard0/Pictures/Screenshots }
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1580)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1431)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.app.Activity.startActivityForResult(Activity.java:3446)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.app.Activity.startActivityForResult(Activity.java:3407)
10-05 22:17:26.790: E/AndroidRuntime(28347): at de.vogella.android.todos.TodoDetailActivity$1.Try3(TodoDetailActivity.java:149)
10-05 22:17:26.790: E/AndroidRuntime(28347): at de.vogella.android.todos.TodoDetailActivity$1.onClick(TodoDetailActivity.java:132)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.view.View.performClick(View.java:4223)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.view.View$PerformClick.run(View.java:17275)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.os.Handler.handleCallback(Handler.java:615)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.os.Handler.dispatchMessage(Handler.java:92)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.os.Looper.loop(Looper.java:137)
10-05 22:17:26.790: E/AndroidRuntime(28347): at android.app.ActivityThread.main(ActivityThread.java:4898)
10-05 22:17:26.790: E/AndroidRuntime(28347): at java.lang.reflect.Method.invokeNative(Native Method)
10-05 22:17:26.790: E/AndroidRuntime(28347): at java.lang.reflect.Method.invoke(Method.java:511)
10-05 22:17:26.790: E/AndroidRuntime(28347): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
10-05 22:17:26.790: E/AndroidRuntime(28347): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
10-05 22:17:26.790: E/AndroidRuntime(28347): at dalvik.system.NativeStart.main(Native Method)
10-05 22:17:26.815: E/android.os.Debug(2282): !@Dumpstate > dumpstate -k -t -z -d -o /data/log/dumpstate_app_error
10-05 22:17:29.950: E/Watchdog(2282): !@Sync 36
10-05 22:17:31.460: E/WifiP2pStateTracker(2282): getNetworkInfo : NetworkInfo: type: WIFI_P2P[], state: UNKNOWN/IDLE, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
10-05 22:17:32.890: E/Sensors(2282): Gyro old sensor_state 75, new sensor_state : 73 en : 0
10-05 22:17:32.895: E/Sensors(2282): Pressure old sensor_state 73, new sensor_state : 65 en : 0
10-05 22:17:38.545: E/MtpService(2826): In MTPAPP onReceive:android.intent.action.BATTERY_CHANGED
10-05 22:17:38.550: E/MtpService(2826): battPlugged Type : 2
Update:
ACTION_VIEW
doesn't work
ACTION_GET_CONTENT
doesn't work
ACTION_PICK
works, but I prefer the default photos Gallery view
I have read about these in the documentation, but didn't fully understand the difference between them. Can someone clear this out?
Upvotes: 0
Views: 11017
Reputation: 1006674
First, setData()
wipes out your setType()
IIRC. When you actually need both (hint: not here), set them both together with setDataAndType()
.
Second, ACTION_GET_CONTENT
is for choosing by type, not location. Quoting the documentation for ACTION_GET_CONTENT
:
Note that no URI is supplied in the intent, as there are no constraints on where the returned data originally comes from
Hence, you will need to remove your setData()
call and just use setType()
. However, that will not pick from that folder.
ACTION_PICK
is where you specify a collection to pick from, rather than a type. However, there is no guarantee that there will be an app on the device that supports ACTION_PICK
for a file://
Uri
.
I would recommend that you implement the UI in your application directly.
Upvotes: 3