需要在内部存储中为我的Android应用程序创建一个文件夹

发布于 2025-01-29 06:00:28 字数 3048 浏览 2 评论 0原文

我正在创建一个Android应用程序,需要在内部存储中创建一个文件夹来存储用户生成的文件(就像WhatsApp如何在内部存储中创建一个文件一样)。我正在使用Manage_external_storage权限,但是Google因此拒绝了我的应用程序,因此没有其他方法可以为此做出工作。如果还有其他许可或做到这一点的方式,它将非常有帮助。

file.mkdirs()没有创建文件夹。

我已经尝试了此处提到的其他方法,但是它们都没有起作用。 android-将内部存储存储给我创建的文件夹

=“ https://stackoverflow.com/questions/20523658/20523658/how-to-to-create-application-pecific-pecific-folder-in-indroid-gallery”>如何在Android Gallery中创建特定于应用程序的文件夹?

file.mkdirs.mkdirs.mkdirs ()为此给予错误。

我的代码:

AndroidManifest:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

请求权限:

                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                            val intent =Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
                            val uri = Uri.fromParts("package", packageName, null)
                            intent.data = uri
                            startActivity(intent)
                        }
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                            val intent =Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
                            val uri = Uri.fromParts("package", packageName, null)
                            intent.data = uri
                            startActivity(intent)
                        }
                        val permissions: Array<String> = arrayOf(
                            Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission_group.STORAGE,
                            Manifest.permission.MANAGE_DOCUMENTS,
                            Manifest.permission.INSTALL_PACKAGES
                        )
                        //requestPermissions(permissions, PackageManager.PERMISSION_GRANTED)
                        requestPermissions(permissions, 1)

在内部存储中创建文件夹:

        val folder = "/storage/emulated/0/"+
                getString(R.string.foldername)
        val path = folder + File.separator.toString() + getString(R.string.lbl_Order)+orderModelClass!!.name+ ".pdf"
        if (!File(folder).exists()) {
            File(folder).mkdirs()
        }

I am creating an android application where I need to create a folder in Internal Storage to store the files generated by user (Just like how whatsapp creats one in Internal storage). I was using MANAGE_EXTERNAL_STORAGE permission but google has rejected my app because of it, and no other way is working for that. If there is any other permission or way of doing this it will be very helpful.

The File.mkdirs() is not creating folder.

I have tried other ways as mentioned here, but none of them work.
Android- Saving Internal Storage to my created folder

How to create application specific folder in android gallery?

File.mkdirs() is giving false for that.

My code:

AndroidManifest:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

Requesting for permissions:

                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                            val intent =Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
                            val uri = Uri.fromParts("package", packageName, null)
                            intent.data = uri
                            startActivity(intent)
                        }
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                            val intent =Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
                            val uri = Uri.fromParts("package", packageName, null)
                            intent.data = uri
                            startActivity(intent)
                        }
                        val permissions: Array<String> = arrayOf(
                            Manifest.permission.WRITE_EXTERNAL_STORAGE,
                            Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission_group.STORAGE,
                            Manifest.permission.MANAGE_DOCUMENTS,
                            Manifest.permission.INSTALL_PACKAGES
                        )
                        //requestPermissions(permissions, PackageManager.PERMISSION_GRANTED)
                        requestPermissions(permissions, 1)

Creating folder in internal storage:

        val folder = "/storage/emulated/0/"+
                getString(R.string.foldername)
        val path = folder + File.separator.toString() + getString(R.string.lbl_Order)+orderModelClass!!.name+ ".pdf"
        if (!File(folder).exists()) {
            File(folder).mkdirs()
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情深缘浅 2025-02-05 06:00:28

我认为您上面提到的是“专用存储”,可以通过'filesdir.path查询您,

您不需要任何许可即可访问它。
您可以在此处创建一个文件夹。

    private fun createFileInInternalFolder() {
    val internalFolderPath = this.filesDir.path + "/My_FOLDER"
    val fileName = File(internalFolderPath, "myFile.txt")
    if (!fileName.exists()) {
        if(fileName.createNewFile()) {
            Toast.makeText(this, "File Created", Toast.LENGTH_SHORT).show()
        }
    }
}

在文件浏览器中,更重要的是在文件夹上方看不到。
但是您可以通过Android Studio设备文件资源管理器看到

I think what you have mentioned above is 'app-specific storage' which can be queried by'filesDir.path'

You don't need any permission to access that.
And you can create a folder there as follows.

    private fun createFileInInternalFolder() {
    val internalFolderPath = this.filesDir.path + "/My_FOLDER"
    val fileName = File(internalFolderPath, "myFile.txt")
    if (!fileName.exists()) {
        if(fileName.createNewFile()) {
            Toast.makeText(this, "File Created", Toast.LENGTH_SHORT).show()
        }
    }
}

Further more above folder wont be visible in File browsers.
Yet you can see that through Android Studio Device File Explorer

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文