标签: saf

为什么我在Netbeans 7.1中找不到Java桌面应用程序

我从http://netbeans.org/downloads下载了所有捆绑的Netbeans 7.1,并在Windows 7上成功安装.

但是当我添加新项目时,我找不到Java桌面应用程序应该在Java类别下.

它在哪里?或者7.1中的替代品是什么?我需要通过拖动组件来创建GUI.

谢谢.

netbeans desktop-application saf jsr296 swing-app-framework

20
推荐指数
1
解决办法
4万
查看次数

如何在Android 11和targetApi 30上从文档uri获取真实文件路径或文件名

Android 11
\n targetApi 30
\n不请求READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE
\n使用SAF api 获取如下 uri:
\n "content://com.android.providers.media.documents/document/document%3"
\n并解析uri 像这样:

\n
public static String getRealPath(uri) {\n    String docId = DocumentsContract.getDocumentId(uri);\n    String[] split = docId.split(":");\n    String type = split[0];\n    Uri contentUri;\n    switch (type) {\n        case "image":\n            contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;\n            break;\n        case "video":\n            contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;\n            break;\n        case "audio":\n            contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;\n            break;\n        default:\n            contentUri = MediaStore.Files.getContentUri("external");\n    }\n    String selection = "_id=?";\n    String[] selectionArgs = new String[]{\n            split[1]\n    };\n\n    return getDataColumn(getContext(), contentUri, selection, selectionArgs);\n}\n\npublic …
Run Code Online (Sandbox Code Playgroud)

android saf

7
推荐指数
0
解决办法
1043
查看次数

是否有比Swing更好的Java应用程序框架?

我打算在一些业余爱好Java项目上工作.我做过一些小规模的项目,所以我熟悉语言本身并使用Swing构建GUI.我想让我的工作不那么特别,也许会找到一些可能在现实世界中有用的工具.

NetBeans现在与Swing应用程序框架捆绑在一起,这似乎是一个非常有用的工具.它有助于弥合了解如何创建JFrame以及如何在更大的应用程序的上下文中有效地使用JFrame之间的鸿沟.问题是,有大量的API完全没有记录,并且几乎没有关于如何使用它的文档.常见问题解答中只有两个问题,邮件列表几乎已经死了,我甚至无法判断项目是否正在积极开发或是否已被放弃.我已经成功地开始运行它,主要基于项目主页发布的两年前的JavaOne演示文稿.

还有更好的选择吗?是否有另一个工具/库/ API以更新手友好的方式做同样的事情?请注意,我目前正计划开发桌面应用程序,而不是在寻找像Spring和Hibernate这样的J2EE框架.

java saf

6
推荐指数
1
解决办法
3037
查看次数

如何在 Android Q 中请求删除非拥有文件的文件

在 Android Q 中,不是默认文件管理器或图库的应用程序只能修改和/或删除它们拥有的图像文件,因此,应用程序创建的图像文件。

授予读/写权限不允许修改或删除不属于应用程序的任何文件。

这意味着不仅其他应用程序创建的文件无法访问,而且如果某个应用程序被卸载然后重新安装,那么该应用程序将失去该应用程序先前创建的所有公共文件的所有权。因此,重新安装后,它不能再修改或删除它们。

当想要修改一个图像文件或删除大量的多个图像文件,这些文件以前属于某个应用程序,但由于重新安装而失去了所有权,那么实现此类操作(删除或修改)的过程是什么?

最好的解决方案是不使用 SAF 文件选择器,以避免请求用户通过 SAF 选择和授予位置。

而如果唯一的解决方案是使用SAF文件选择器,那么如何触发直接提示删除一组已知的特定文件,而无需请求树访问权限,而不必告诉用户浏览、搜索和自己做呢?

android saf delete-file

6
推荐指数
2
解决办法
1877
查看次数

如何在android 10上列出所有pdf文件?

由于更改与访问共享存储的授权有关,因此似乎不再可能通过这种方法搜索所有 pdf 类型的文档(使用 requestLegacyExternalStorage = "false"):

ContentResolver cr = context.getContentResolver();
Uri uri = MediaStore.Files.getContentUri("external");
String[] projection = null;
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
                    + MediaStore.Files.FileColumns.MEDIA_TYPE_NONE;
String[] selectionArgs = null;
String sortOrder = null;
Cursor allNonMediaFiles = cr.query(uri, projection, selection, selectionArgs, sortOrder);
Run Code Online (Sandbox Code Playgroud)

检查此链接:媒体数据限制

我看到的唯一解决方案是使用 SAF 以递归方式扫描共享存储的所有树,这在我看来资源非常昂贵且荒谬。

有没有人有其他想法?

android saf mediastore android-10.0

6
推荐指数
1
解决办法
2952
查看次数

StorageAccessFramework 和 DownloadManager 的问题

我有一个问题。我正在开发一些流/视频下载应用程序。我正在使用DownloadManager进行视频下载。

请求是提供用户选择保存目的地(SDCard 或内部电话存储)。

我在 Lollipop 上遇到了SAF和 DownloadManager 的问题。

我向用户提供选择用于存储我下载的文件的目录:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, REQUEST_CODE_FOR_DESTINATION);
Run Code Online (Sandbox Code Playgroud)

在 onActivityResult 我通过

Uri treeUri = data.getData();
DocumentFile destinationDirUri = DocumentFile.fromTreeUri(this, treeUri);
Run Code Online (Sandbox Code Playgroud)

现在,我需要将此目的地设置为 DownloadManager.Request 的目的地

Request request = new DownloadManager.Request(Uri.parse(getDownloadUrl()));
request.setTitle(downloadInfo.getTitle());
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationUri(destinationDirUri);
Run Code Online (Sandbox Code Playgroud)

在我选择“下载/视频”目录后,并执行

DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
downloadManager.enqueue(request);
Run Code Online (Sandbox Code Playgroud)

我正进入(状态

E/RecordDownloader? Error while retrieving download infos    
W/System.err? java.lang.IllegalArgumentException: Not a file URI: content://com.android.externalstorage.documents/tree/primary%3ADownload%2Fvideo
W/System.err? at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167)
W/System.err? at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
W/System.err? at android.content.ContentProviderProxy.insert(ContentProviderNative.java:475)
W/System.err? at android.content.ContentResolver.insert(ContentResolver.java:1207)
W/System.err? at android.app.DownloadManager.enqueue(DownloadManager.java:946) …
Run Code Online (Sandbox Code Playgroud)

android uri saf

5
推荐指数
0
解决办法
1048
查看次数

存储访问框架:撤销树权限后保留文件权限

在应用程序中,用户使用ACTION_OPEN_DOCUMENT_TREE意图通过 SAF 选择一个目录,并且用户可以在其中创建各种文件。问题是当用户更改工作目录(始终使用 SAF)时,对这些文件的访问权限就会丢失。ACTION_CREATE_DOCUMENT如何保持或 之类的访问权限ACTION_OPEN_DOCUMENT

这是我的代码

  • 选择目录
private void showDirectoryPicker() {
        Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
               i.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
               i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

        startActivityForResult(i, 12345);
}
Run Code Online (Sandbox Code Playgroud)
  • 处理结果
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != Activity.RESULT_OK) return;
        mDir = data.getData();

        grantUriPermission(getPackageName(), mDir, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        getContentResolver().takePersistableUriPermission(mDir, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
Run Code Online (Sandbox Code Playgroud)
  • 创建文件
 mFile = DocumentFile.fromTreeUri(getContext(), mDir).createFile("text/plain", "some file.txt").getUri();
Run Code Online (Sandbox Code Playgroud)
  • 现在,如果用户更改工作目录,我会释放旧目录的权限,因此:
getContentResolver().releasePersistableUriPermission(mDir, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
revokeUriPermission(mDir, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

mDir = null;

// ask for another …
Run Code Online (Sandbox Code Playgroud)

android saf

5
推荐指数
1
解决办法
1500
查看次数