gpt4 book ai didi

android - mimeType-check 在 Android 7.0 Nougat 中被破坏了吗? (android list 的 Intent 过滤器)

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:29:06 25 4
gpt4 key购买 nike

Android 的我的文件 应用程序似乎不能很好地与以下AndroidManifest.xml 配置一起工作:

  <intent-filter>
<data android:scheme="file" />
<data android:pathPattern=".*\\.myext" />
...

一些在线资源推荐使用

  <intent-filter>
<data android:scheme="content" />
<data android:mimeType="application/octet-stream" />
...

这意味着您的应用将尝试打开所有二进制文件。这并不理想,但很好,只要它有效...

好吧,当您安装最新的 Android 更新并更新到 7.0 Nougat 时,它会停止工作。

为了解决这个问题,我尝试使用:

  <intent-filter>
<data android:scheme="content" />
<data android:mimeType="*/*" />
...

并看到 mime 类型为空。 这么看来牛轧糖版不仅打乱了原网址,隐藏了扩展名,还丢了mime类型?!

有没有人在 Android 7.0 Nougat 上看到任何自定义文件扩展名(文件扩展名关联)的工作示例?如何配置 android list XML?我应该使用哪个 targetSdkVersion?

最佳答案

根据 this part在 Android Nougat 更改文档中,他们确实对共享文件的方式进行了以下更改:-

For apps targeting Android 7.0, the Android framework enforces the StrictMode API policy that prohibits exposing file:// URIs outside your app. If an intent containing a file URI leaves your app, the app fails with a FileUriExposedException exception.

To share files between applications, you should send a content:// URI and grant a temporary access permission on the URI. The easiest way to grant this permission is by using the FileProvider class. For more information on permissions and sharing files, see Sharing Files.

您已经提到了您必须进行的所有必需的 intent-filter 相关更改 - 其中最重要的是以下行:-

<data android:scheme="content"/>

除了 intent-filter 中的更改之外,我认为您必须稍微更改您的代码才能接受并使用 content URI。 ,而不是文件 URI。像这样的事情应该做:-

Uri uriOfData = getIntent().getData();
File file = null;
String scheme = uriOfData.getScheme();
String fileName = uriOfData.getEncodedPath();
file = new File(filename);

try {
InputStream inputStream;
if (file != null) inputStream = new FileInputStream(file);
else inputStream = getContentResolver().openInputStream(uriOfData);
InputStreamReader reader = new InputStreamReader(inputStream);
}
}

关于android - mimeType-check 在 Android 7.0 Nougat 中被破坏了吗? (android list 的 Intent 过滤器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46171370/

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