【问题标题】:android.content.ActivityNotFoundException while fetching image from web从网络获取图像时出现android.content.ActivityNotFoundException
【发布时间】:2012-08-01 07:51:39
【问题描述】:

每次我想在 Android 中使用内置库显示来自网络的图像时都会收到此错误。

08-03 10:12:59.895: E/AndroidRuntime(27974): FATAL EXCEPTION: main
08-03 10:12:59.895: E/AndroidRuntime(27974): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=http://192.168.10.132:8000/someimage.jpg typ=image/* }
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.app.Activity.startActivityForResult(Activity.java:2827)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.app.Activity.startActivity(Activity.java:2933)
08-03 10:12:59.895: E/AndroidRuntime(27974): at my.package.activities.MediaActivity$2.onItemClick(MediaActivity.java:58)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1936)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.os.Handler.handleCallback(Handler.java:587)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.os.Handler.dispatchMessage(Handler.java:92)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.os.Looper.loop(Looper.java:123)
08-03 10:12:59.895: E/AndroidRuntime(27974): at android.app.ActivityThread.main(ActivityThread.java:3687)
08-03 10:12:59.895: E/AndroidRuntime(27974): at java.lang.reflect.Method.invokeNative(Native Method)
08-03 10:12:59.895: E/AndroidRuntime(27974): at java.lang.reflect.Method.invoke(Method.java:507)
08-03 10:12:59.895: E/AndroidRuntime(27974): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
08-03 10:12:59.895: E/AndroidRuntime(27974): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
08-03 10:12:59.895: E/AndroidRuntime(27974): at dalvik.system.NativeStart.main(Native Method)

我的代码是:

gridView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
        Media clicked = adapter.getItem(position);

        String url = Backend.BASE_MEDIA_URL + clicked.url_big;

        Log.d("Media", url);

        Intent intent = new Intent();  
        intent.setAction(android.content.Intent.ACTION_VIEW);   
        intent.setDataAndType(Uri.parse(url), "image/*");  
        startActivity(intent);  
    }
});

我 100% 肯定 url 是正确的。提前致谢。

编辑:清单文件,我删除了一些不相关的活动

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="my.package" android:versionCode="1"
    android:versionName="1">

    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="16" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" >


        <activity android:name=".android.intent.action.VIEW" ></activity>

    </application>

</manifest>

【问题讨论】:

  • 在您的清单文件中有提及权限?
  • 哪个权限?我将活动 .android.intent.action.VIEW 添加到清单中,但它不起作用。
  • 你能在浏览器“192.168.10.132:8000/someimage.jpg”中打开那个网址吗?打不开。
  • @pawelo 在应用程序选项卡中添加类似 的新活动。
  • 我刚刚注意到,如果我将 intent.setDataAndType(Uri.parse(url), "image/*"); 更改为 intent.setData(Uri.parse(url)); 系统会询问我如何处理此 URI(例如使用浏览器),如果我选择浏览器,它会起作用。但我还是想默认使用系统图库。

标签: android rest service web


【解决方案1】:

每次我想在 Android 中使用内置图库显示来自网络的图像时都会收到此错误

首先,没有单一的“内置图库”应用程序。有成百上千的设备,它们会有各种各样的“内置图库”应用程序。

其次,除了浏览器之外,您的设备上没有任何东西能够“显示来自网络的图像”,而且只有当您让 Android 确定实际的具体 MIME 类型时。不要求任何设备的“内置图库”应用程序支持第三方应用程序使用它来下载和显示图像。

【讨论】:

  • 那么,你有什么建议?我应该构建自己的自定义活动来显示图像吗?我需要自动旋转和多点触控调整大小。你认为用 android 显示全屏图片的好习惯是什么?
  • @pawelo:“我需要自动旋转和多点触控调整大小”——然后自己编写代码。首先,ACTION_VIEW 是查看图像,而不是编辑图像。其次,不能保证用户将拥有一个提供“自动旋转和多点触控调整大小”的应用程序,您可以要求它为您编辑图像。如果您希望更一般地允许用户下载和编辑图像,请自己下载图像,使用具有正确 MIME 类型的ACTION_EDIT Intent...但这将允许用户进行任何类型的编辑,并且只有在他们安装了图像编辑器的情况下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多