Android-使用我的应用程序从电子邮件客户端应用程序读取附件

Android-使用我的应用程序从电子邮件客户端应用程序读取附件,android,email-attachments,Android,Email Attachments,我想用我的应用打开android电子邮件应用的附件(例如InputStream)。 我可以将我的应用程序与电子邮件关联以打开特定文件,但当我获得uri时,如content://com.samsung.android.email.attachmentprovider/1/176/RAW我无法打开流,并引发SecurityException:权限拒绝:打开提供程序 com.samsung.android.email.provider.provider.attachment.AttachmentPro

我想用我的应用打开android电子邮件应用的附件(例如InputStream)。 我可以将我的应用程序与电子邮件关联以打开特定文件,但当我获得uri时,如
content://com.samsung.android.email.attachmentprovider/1/176/RAW

我无法打开流,并引发SecurityException:
权限拒绝:打开提供程序
com.samsung.android.email.provider.provider.attachment.AttachmentProvider
来自ProcessRecord{83b03a2 11090:com.test.att/u0a416}
(pid=11090,uid=10416)需要com.samsung.android.email.permission.ACCESS\u PROVIDER或com.samsung.android.email.permission.ACCESS\u PROVIDER

在代码中使用ContentProvider之前,我尝试在清单文件中添加此权限并授予读取权限,但引发了另一个异常: Uid xxx没有uri 0的权限@content://...... 示例:
Uri=mInitApp.geIntent().getData(); grantUriPermission(mCtx.getPackageName(),uri,Intent.FLAG\u GRANT\u READ\u uri\u PERMISSION); InputStream in=mCtx.getContentResolver().openInputStream(uri)

奇怪的是,如果我多次尝试使用我的应用程序打开附件,并授予权限,有时我可以读取附件(uri保持不变)。
对于实际用途,我不想手动下载附件并从下载文件夹中选择它。
我错过什么了吗?

谢谢

您不能授予自己权限。只有内容提供商可以这样做。消费者只能获得一个权限并获取它。你到底要在哪里打开该inputstream?在我的自定义类中,在主活动应用程序上,在主线程上。我的应用程序在我单击电子邮件中的附件时启动。该文件是一个自定义kml文件,我需要读取一些行。是否有其他方法可以访问附件而不手动保存附件?
尝试在清单文件中添加此权限。准确程度如何?您是否检查了
intent.getFlags()
?你买了哪些?