Articles of 存储访问框架

在Android中使用存储访问框架保存文件

我将文档访问框架与我的云存储访问应用程序集成在一起。 使用这个文档,我已经能够访问该文件并检索它(我只是使用Gmail应用程序的附加function来检查这个)。 我现在试图find如何使用相同的方法保存文件(直接通过应用程序保存文件到云存储),我做了以下更改: 对于getRoots调用, row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE); 我也重写了createDocument方法。 我没有看到很多关于如何做到这一点的示例代码或文档。 我也看到,像“照片”应用程序的一堆应用程序有“共享”button,使用不同的方法(日志显示miniShareActivity),我的应用程序不显示在那(它看起来像它使用不同的文件共享机制) 我正在寻找信息 如何使用SAF来存储文件(任何示例文件将是伟大的或指向文档)。 我假设它将允许用户使用select器界面导航到文件夹并存储文件。 如何让应用程序显示在应用程序的“Minishare活动”列表中,以将文件导入到应用程序中(看起来它不提供select器界面,但我仍然希望提供支持,以便将文件保存到一个默认的位置)

存储访问框架在testing应用程序

我正在使用Intent.ACTION_OPEN_DOCUMENT_TREE授予我的应用程序写入访问外部存储(在棒棒糖和棉花糖)。 但是我想在testing应用程序中写入外部存储器。 Intent.ACTION_OPEN_DOCUMENT_TREE使用系统对话框,因此我无法在testing期间授予权限。 我也试图在应用程序中允许它,然后在testing中使用它,但它不是共享的 – 应用程序项目和testing项目是不同的包。 是否有人知道一些解决方法,例如可能允许整个外部存储器的testing目的? 也许通过改变一些系统属性? adb shell setprop SOMEPROPERTY 1

SAF(Storage Access Framework)是否解决了Android 4.4(KitKat)中的SD卡写入问题?

在Android 4.4中,来自Play Store的应用程序只能写入其特定于应用程序的目录(例如:/storage/extSdCar/Android/data/com.example.myapp/),并且应用程序不允许在微型SD卡。 所以我正在探索新的SAF API来检查是否可以使用SAF写入除应用程序特定目录之外的微型SD卡。 我通过创build示例提供程序和客户端应用程序来实现SAF。 在我的提供者中,我尝试通过在queryRoots中实现以下代码来显示SD卡的全部内容: row.add(Root.COLUMN_DOCUMENT_ID, getDocIdForFile(new File("/storage/extSdCard"))); row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE | Root.FLAG_SUPPORTS_RECENTS | Root.FLAG_SUPPORTS_SEARCH); 我在客户端创build了以下意图,我可以通过我的提供者从SAF的系统UI中浏览SD卡的全部内容。 Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); intent.putExtra(Intent.EXTRA_TITLE, "test.txt"); startActivityForResult(intent, WRITE_REQUEST_CODE); 当我点击保存button,我得到一个Toast错误“保存文档失败”。但是当我导航到我的提供商的应用程序特定目录(/ storage / extSdCar /安卓/数据/com.example.myprovider/)系统用户界面,我可以保存文件。 也没有任何意图,如Intent.CATEGORY_WRITABLE,这样我就只能得到可以编辑的文档。 请帮助我以下几点: 看来即使我们使用SAF,仍然对微型SD卡的WRITE限制保持不变。 它是否正确? 2.有什么方法可以创build,删除或修改微型SD卡的应用程序特定目录以外的已有文件? 3.谁决定FLAG_SUPPORTS_WRITE标志为正常的用户文件,如照片,video,音乐,文件等?

找不到处理Intent的活动 – android.intent.action.OPEN_DOCUMENT

我正在尝试使用Android 4.4的存储访问框架 我开发了一个虚拟的应用程序,它激发了开始活动的意图。 Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(intent, READ_REQUEST_CODE); 另外我还开发了另一个虚拟应用程序作为文件提供者。 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.saf" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.saf.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <provider android:name="com.example.saf.MyFileProvider" android:authorities="com.example.saf.documents" android:exported="@bool/is_kitkat" android:enabled="@bool/is_kitkat" android:grantUriPermissions="@bool/is_kitkat" android:permission="android.permission.MANAGE_DOCUMENTS"> <intent-filter> <action […]

使用KitKat存储访问框架后,打开Goog​​le Drive文件内容URI

我正在使用Android 4.4的存储访问框架,并打开文件select器。 除了从Google Drive中select文件时,一切都可以正常工作,我只能弄清楚如何将其作为inputstream打开,但是我想要一个java File对象。 正在返回的内容uri看起来像这样:content://com.google.android.apps.docs.storage/document/acc%3D4%3Bdoc%3D2279 其他类似的问题,但没有一个工作的解决scheme,让我得到的文件名,文件大小和内容: 从URI获取真正的path,Android KitKat新的存储访问框架 KitKat上的Android图库为Intent.ACTION_GET_CONTENT返回不同的Uri 我也研究过Paul Burke的FileChooser( https://github.com/iPaulPro/aFileChooser ),这是这个问题列表中最常见的问题。 如何从这个内容中获得文件? 我目前的解决方法是从inputstream写出一个临时文件。 谢谢!