【问题标题】:android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENTandroid.content.ActivityNotFoundException:未找到处理 Intent { act=android.intent.action.GET_CONTENT 的活动
【发布时间】:2013-10-05 19:18:27
【问题描述】:

我正在尝试打开 screenshots 照片文件夹。

        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));
            }             

我在 Manifest 中有这个权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

并从 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

更新:

ACTION_VIEW 不起作用

ACTION_GET_CONTENT 不起作用

ACTION_PICK 有效,但我更喜欢默认照片库视图

我已在文档中阅读过这些内容,但并未完全理解它们之间的区别。有人可以解决这个问题吗?

【问题讨论】:

    标签: java android eclipse android-intent


    【解决方案1】:

    首先,setData() 清除了您的 setType() IIRC。当您确实需要两者时(提示:不在此处),请将它们与setDataAndType() 一起设置。

    其次,ACTION_GET_CONTENT 用于选择类型,而不是位置。引用the documentation for ACTION_GET_CONTENT:

    请注意,intent 中没有提供 URI,因为对于返回的数据最初来自何处没有任何限制

    因此,您需要删除您的 setData() 呼叫,而只需使用 setType()。但是,不会从该文件夹中选择。

    ACTION_PICK 是您指定要从中选择的集合而不是类型的位置。但是,不能保证设备上会有支持ACTION_PICK 的应用程序为file:// Uri

    我建议您直接在应用程序中实现 UI。

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 2022-11-04
      • 2016-02-01
      相关资源
      最近更新 更多