簡體   English   中英

使用Android NDK從字符串路徑打開文件

[英]Opening Files from a String Path with Android NDK

我最近瀏覽了Android文件訪問文檔,但是似乎無法弄清楚如何實際打開一個文件,該文件以包含要打開的文件路徑的字符串形式給出。

我(最終)想要完成的工作是這樣的:

  1. 用戶使用Intents選擇特定類型的文本文件,並接收該文件的URI。 由此,我導出路徑( getPath() )並將此字符串傳遞給本機C ++代碼。
  2. 本機C ++從字符串中打開文件,解析內容。
  3. 使用上述內容執行一些實際工作。

根據到目前為止的發現,似乎不再可能以這種方式打開文件(至少從SDK版本26開始):

  • 我知道存在的文件的硬編碼路徑會授予我permission denied
  • getPath()接收到的路徑本身會觸發No such file or directory錯誤。

一種解決方法是使用ContentResolver在Java端打開文件,然后將文件描述符傳遞到本機端。 這行得通,但是有問題:文件可以包含對其他要打開的文件(“包含文件”)的引用,從而限制了使用范圍。

為了清楚起見,這些文件位於Android系統的“ USB”分區本地,與應用程序本身無關。 不能作為APK的資源/資產或其他類似問題所需的資源。

總而言之,我想問題是這樣的:給定應用程序Java端的路徑,是否可以打開文件以及它所引用的其他文件? 是否有執行此操作的要求,例如為文件夾或類似內容請求正確的權限?

從Android 6.0(API級別23)開始,每次應用啟動時,您都需要請求危險操作 ”(例如訪問文件系統或讀取聯系人)的權限 鏈接的頁面已經有一段代碼可以復制。

在較舊的手機上,在清單中請求許可就足夠了,但是目標SDK版本最近被提高到8.0(= 26)。 如果要支持6.0之前的設備,則Android兼容性庫將允許您調用相同的API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM