【问题标题】:How to open an ImageView resource with Android's default Gallery application?如何使用 Android 的默认图库应用程序打开 ImageView 资源?
【发布时间】:2017-04-23 21:41:17
【问题描述】:

我四处寻找一种使用默认图库应用程序打开 ImageView 资源的好方法,但结果是空的。现在我不再寻找一种好方法,而只是一种可行的方法。我正在使用 Android 的最新 API,并且尝试了 Stack 和其他资源上可用的许多不同的可能解决方案。我基本上是在尝试通过单击时打开我的幻灯片的当前图像(基本上是 ImageView)来搭载 Gallery 应用程序的平移和缩放功能。我尝试过使用 .setData、.setDataAndType、几种不同的 URI 解析方法、意图过滤器等。我什至尝试设置一个解析器,以防止在返回似乎有效的空值时执行代码。这使我相信也许某些事情没有正确解决?这是我的代码:

  public void onImageClicked(View view) {
    Intent intent = new Intent();
    intent.setAction(ACTION_VIEW);
    Uri imgUri = Uri.parse("android.resource://com.mypackagename/" + images[current]);
    intent.setDataAndType(imgUri, "image/*");
    startActivity(intent);
}

images[current] 是 Integer 类型,返回幻灯片中当前图像的资源值。例如:R.drawable.myImage1

注意:com.mypackagename 只是一个审查员。我的原始代码中有实际的包名。

错误:

java.lang.IllegalStateException: 无法执行活动的方法

引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372)

原因:android.content.ActivityNotFoundException:找不到处理 Intent 的 Activity { act=android.intent.action.VIEW dat=android.resource://com.mypackagename/2130837662 typ=image/* }

【问题讨论】:

    标签: android android-intent imageview gallery


    【解决方案1】:

    如何使用 Android 的默认图库应用打开 ImageView 资源?

    有数以千计的 Android 设备型号。在这些设备模型上分布有数百个“默认图库应用程序”实现。没有单一的“默认图库应用程序”,您的代码与“图库应用程序”关系不大。

    我基本上是在尝试搭载 Gallery 应用程序的平移和缩放功能

    没有要求所有接受图像作为内容的ACTION_VIEW 活动都支持平移和缩放。如果要平移和缩放,请使用库。

    这让我相信也许某些事情没有正确解决?

    很少有应用会费心支持android.resource 方案。

    向第三方应用提供资源的最佳解决方案是使用ContentProvider。那可能是my StreamProvider,它为“开箱即用”的资源服务提供了一些支持。或者,它可以是您自己的 ContentProvider 实现。

    【讨论】:

    • 好答案!为您的图像数据滚动您自己的 ContentProvider,然后发送一个 ACTION_VIEW Intent。仅此而已,但接收应用程序可能看起来根本不像您想要的。
    • 感谢您的帮助!这是我第一次创建 Android 应用程序。我正在学习 Java 和 Android 库。我会试一试,看看我能想出什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多