我试图通过ContentProvider公开位于我的应用程序的/ data目录中的.png文件,但不是达到openFile
方法query
正在被调用。现在我只有一个图像需要公开以便与其他应用程序共享,我如何设置我的意图以转到openFile
而不是query
?通过Android上的ContentProvider在应用程序的数据目录中共享图像
Intent shareImageIntent = new Intent(Intent.ACTION_SEND);
shareImageIntent.setType("image/*");
shareImageIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(Intent.createChooser(shareImageIntent, "Share image"));
凡乌里看起来像
content://my.package.contentprovider/fileName
或替代地,我需要为此建立一个数据库,并返回一个指针?
UPDATE
因此,这似乎是工作之外的所有的短信应用(这是我决定测试第一)我想不过来支持共享它。
以下是有关堆栈跟踪:
产生的原因:java.lang.IllegalArgumentException异常:在 内容查询://mypackage.myprovider/someImage.png返回null结果。在 com.android.mms.ui.UriImage.initFromContentUri(UriImage.java:104)at com.android.mms.ui.UriImage。(UriImage.java:63)at com.android.mms.model.ImageModel .initModelFromUri(ImageModel.java:83) at com.android.mms.model.ImageModel。(ImageModel.java:65)at com.android.mms.data.WorkingMessage.changeMedia(WorkingMessage.java:481) at com.android.mms.data.WorkingMessage.setAttachment(WorkingMessage.java:375) ...
所以短信应用程序正在执行一个查询,而不是直接从openFile
读书,这对每一个其他应用程序我手机似乎在做(包括ot她的谷歌应用程序)
有谁知道我需要返回这里fullfil查询适当?我现在要去AOSP挖掘。
Thx这个伟大的答案! – Snicolas
另请注意,列未被请求,但需要填写短信应用程序。 – Snicolas