2011-08-29 23 views
1

如果我有这样的手:如何在画廊的应用程序加载图像给出的`R.drawable.foo`参考?

R.drawable.foo 

这实际上只是一个jpg文件的引用,我怎么打开它在Android的画廊应用程序?

我已经找到了一大堆这表明沿此线的东西引用:

startActivity(
    new Intent(
     Intent.ACTION_VIEW, 
     /* what goes here for the URI?? */ 
    ) 
); 

但是URI我用什么?

我在做this tutorial,并且想要在原生Android应用程序中打开图像,因此我可以免费获取所有缩放,共享等内容。

如果我不能在这里使用URI(如建议here),我应该怎么办加载图像?

回答

1

通过设计其他应用程序不能访问你的资源。其他方面也是如此。

,所以你有两个选择。

易程科技:

复制你的资源(manualy)到SD卡,然后发来的URI

这是你的URI会是什么样

Uri.parse(Environment.getExternalStorageDirectory() + "/android/com.my.app/.cache/foo.jpg"); 

Environment.getExternalStorageDirectory()抽象硬编码或安装 的.cache将是一个隐藏文件夹,如果你不想让你的临时图像SHO W UP在画廊图像,那么你需要在.cache文件夹中创建.nomedia空文件

你可能需要添加SD卡权限

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

的在Hardway:

您需要执行一个FileContentProvider使用ContentProvider

为您提供自定义的URI,并从FileContentProvider.Open,Y提供您的文件OU可能需要实现mime等方法藏汉此

UPDATE 您可能还需要注册在清单的内容提供商。 Android - open pdf in external application

+0

这是有道理的,谢谢!如果我将它们复制到SD卡上,那么建议启动它们的呼叫是什么(即完整的“启动”呼叫)? –

+0

应用程序将资源加载到'.cache'文件夹的典型方式是什么?这是需要编码还是将我的文件放在特殊位置,并在安装时丢弃? –

+0

/sdcard/com.my.app路径是在较新版本的android中创建的,但在2.1和2.2中,我想我们必须创建它。并绘制我们必须手动复制 – Samuel

相关问题