gpt4 book ai didi

android - 与第 3 方 Activity 共享文件或内容

转载 作者:行者123 更新时间:2023-11-30 03:08:42 24 4
gpt4 key购买 nike

我有一个简单的问题,但似乎无法在网上找到答案。

我有一个 Activity A,它从互联网上下载文件并将它们放入通过 getApplicationContext().getFilesDir().getPath() 获取的本地文件夹中,该文件夹指向:“/data/data/com.myapp.android/文件”

现在,当用户选择一个文件时,我想显示其内容,为此我执行以下操作:

File file = new File(filePath);
Uri uri = Uri.fromFile(file);

MimeTypeMap mime = MimeTypeMap.getSingleton();
String type = mime.getMimeTypeFromExtension(fileExtension);

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(uri, type);

Intent intentChooser = Intent.createChooser(intent, "Open File");
startActivity(intentChooser);

执行此操作时,用户会看到“打开文件”对话框,在他们选择“画廊”后,画廊 Activity 会出现,但上面什么也没有。

查看 logcat,我看到以下内容:

E/PanoMetadata(17732): Could not read file: /data/data/com.myapp.android/files/downloads/Splash.png
E/PanoMetadata(17732): java.io.FileNotFoundException: /data/data/com.myapp.android/files/downloads/Splash.png: open failed: EACCES (Permission denied)
E/PanoMetadata(17732): at libcore.io.IoBridge.open(IoBridge.java:409)
E/PanoMetadata(17732): at java.io.FileInputStream.<init>(FileInputStream.java:78)

注意“打开失败:EACCES(权限被拒绝)”

但该文件确实存在,我可以毫无问题地使用我的 Activity A 显示它。

问题似乎是开始使用 ACTION_VIEW 的其他 Activity (在本例中为 Gallery)似乎在不同的进程/用户下运行,因此它没有对我的文件的读取权限。

我的 3 个问题是:

  1. 是否可以让 ACTION_VIEW Activity 在我的流程和用户上下文( Activity A)中运行?

  2. 如何在 Activity 之间共享文件? (我不喜欢将文件复制到/sdcard/... 下,但如果这是唯一的选择,那将是必须的。)

  3. 有没有办法将文件内容(不是文件指针)从我的 Activity 传递到 Gallery Activity 或其他 Activity?

问候!

最佳答案

Is it possible to get the ACTION_VIEW activity to run within my process and user context (of activity A)?

不,出于安全原因,您也不希望这样做。

How do I share files between activities?

据我所知,这个问题与你的下一个问题相同。

Is there a way to pass the file content (not file pointer) from my activity to the Gallery activity or other activities?

最好的解决方案是使用 ContentProvider。最简单的解决方案是 use FileProvider ,您只需将其添加到您的 list 并进行配置即可提供您的文件,而无需创建子类。另请参阅:http://developer.android.com/training/secure-file-sharing/index.html

关于android - 与第 3 方 Activity 共享文件或内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21342722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com