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

时间:2016-12-08 15:27:35

标签: android android-intent imageview gallery

我已经四处寻找使用默认的Gallery应用程序打开我的ImageView资源的好方法,但是空白了。现在我不再寻找一个好方法,而只是一种可以工作的方式。我正在使用Android的最新API,我在Stack和其他资源上尝试了许多不同的可能解决方案。我基本上试图通过使用它来点击我的幻灯片(基本上是一个ImageView)的当前图像来搭载图库应用程序的平移和缩放功能。我已经尝试使用.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                         at java.lang.reflect.Method.invoke(Native Method)                         在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 / *}

1 个答案:

答案 0 :(得分:2)

  

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

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

  

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

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

  

这让我相信也许有些东西没有正确解决?

很少有应用程序支持android.resource计划。

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