gpt4 book ai didi

android - 将文件复制到 Android 设备内部区域需要 list 权限吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:02:39 27 4
gpt4 key购买 nike

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

您能告诉我需要向 list 中添加哪些内容才能让我的应用将文件复制到内部区域吗?

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

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

这就是为什么我认为 list 是导致问题的原因。

如果我使用 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 Storage有关保存到内部存储的详细信息的文档。

如果你的意思是:

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

那么你不需要额外的权限。这只是定期写入内部存储

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

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

如果你真的想

/data/myApp/myFiles

然后答案是,如果没有 Root ,您就不能。您没有写入/data 文件夹的权限。

关于android - 将文件复制到 Android 设备内部区域需要 list 权限吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8930898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com