将文件复制到Android设备内部区域所需的清单权限?

将文件复制到Android设备内部区域所需的清单权限?,android,permissions,android-manifest,internal,basic4android,Android,Permissions,Android Manifest,Internal,Basic4android,我想让用户选择将文件复制到Android设备数据目录以及外部区域 你能告诉我我需要添加什么到清单中以允许我的应用程序将文件复制到内部区域吗 我计划将文件存储在/data/data/your.app.package.name/myFiles中。在代码中,File.DirInternal转换为该位置 如果我使用File.DirRootExternal,它将转到/mnt/sdcard,这不会使应用程序崩溃 这就是为什么我认为清单是问题的根源 如果我使用File.DirInternal,它将在此行崩溃:

我想让用户选择将文件复制到Android设备数据目录以及外部区域

你能告诉我我需要添加什么到清单中以允许我的应用程序将文件复制到内部区域吗

我计划将文件存储在/data/data/your.app.package.name/myFiles中。在代码中,File.DirInternal转换为该位置

如果我使用File.DirRootExternal,它将转到/mnt/sdcard,这不会使应用程序崩溃

这就是为什么我认为清单是问题的根源

如果我使用File.DirInternal,它将在此行崩溃:

mpTheMediaPlayer.Load(File.DirInternal, "114.mp3")
这是正在崩溃的代码:

' Http sub routines.
'-------------------
Sub JobDone(Job As String)

Select Job
    Case "Job1"

        If HttpUtils.IsSuccess(mp3Url) Then 
            Dim blnFolderMade As Boolean

            mp3 = HttpUtils.GetInputStream(mp3Url)

            timer1.Enabled = True

            Dim out As OutputStream
            out = File.OpenOutput(File.DirInternal,"114.mp3",False)
            File.Copy2(mp3, out)
            out.Close

            ProgressBarDownloading.Visible = False

            ToggleButtonPlayPause.Checked = True
            ToggleButtonPlayPause.Enabled = True
            blnCurrentPauseCheckedState = True
            blnCurrentPauseEnabledState = True

            mpTheMediaPlayer.Release
            mpTheMediaPlayer.Initialize2("")
            mpTheMediaPlayer.Load(File.DirInternal, "114.mp3")
            mpTheMediaPlayer.Play
        End If
End Select
End Sub
以下是日志中的错误:

Starting Job: Job1
** Service (httputilsservice) Create **
** Service (httputilsservice) Start **
main_jobdone (java line: 518)
java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer.prepare(Native Method)
at anywheresoftware.b4a.objects.MediaPlayerWrapper.Load(MediaPlayerWrapper.java:79)
at quran.repeater.main._jobdone(main.java:518)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:113)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:97)
at anywheresoftware.b4a.keywords.Common.CallSub4(Common.java:772)
at anywheresoftware.b4a.keywords.Common.CallSub2(Common.java:759)
at quran.repeater.httputilsservice._processnexttask(httputilsservice.java:180)
at quran.repeater.httputilsservice._response_streamfinish(httputilsservice.java:244)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:113)
at anywheresoftware.b4a.BA$1.run(BA.java:218)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3647)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
java.io.IOException: Prepare failed.: status=0x1

查看Android的文档,了解保存到内部存储的详细信息

如果你的意思是:

/data/data/your.app.package.name/myFiles

那么你就不需要额外的权限了。这只是对内部存储器的常规写入

如果您指的是外部存储(它看起来确实不像),那么您需要

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果你真的想

/数据/myApp/myFiles


那么答案就是你不能不被扎根。您没有写入/data文件夹的权限。

在内部存储或SD卡上写入的权限相同。感谢您的快速回复。我过一会儿再试试。他的问题是关于内部存储的。您对外部存储的许可他指的是手机附带的默认存储空间(8GB/16GB/32GB),而不是SD卡。它允许我将文件复制到mnt/SD卡,但不允许数据/myApp/myFiles。是否还有另一行信息需要进入清单文件?是的,我正在尝试复制到/data/data/your.app.package.name/myFiles,但出现“prepare failed”错误。我正在尝试复制一个使用媒体播放器播放的文件。此外,我使用的设备已根目录,但我不确定用户的设备是否将根目录。请使用您的代码更新您的原始帖子,并使用堆栈跟踪更新异常,我将查看。感谢您的回复。我用代码和日志更新了帖子。似乎是MediaPlayer的问题,而不是存储的问题。看看这些。谢谢你的回复。看起来我只需要使用File.DirRootExternal作为放置文件的位置,因为它似乎是播放mp3文件的唯一位置,所以看起来media player不喜欢File.DirRootExternal位置。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />