외부 영역뿐만 아니라 Android 장치 데이터 디렉토리에 파일을 복사 할 수있는 선택권을 사용자에게 부여하고 싶습니다.Android 장치 내부 영역에 파일을 복사하는 데 필요한 명시적인 권한이 필요합니까?
내 응용 프로그램이 파일을 내부 영역으로 복사 할 수있게하는 매니페스트에 추가해야 할 내용을 말해 줄 수 있습니까?
/data/data/your.app.package.name/myFiles에 파일을 저장할 계획이었습니다. 코드에서 File.DirInternal은 해당 위치로 변환됩니다.
File.DirRootExternal을 사용하면/mnt/sdcard로 이동하여 응용 프로그램이 손상되지 않습니다.
이것이 내가 매니페스트가 문제를 일으키는 것으로 생각한 이유입니다. 내가 File.DirInternal를 사용하는 경우 그것은이 라인에 충돌
는 :
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
: 여기
' 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
는 로그에서 오류입니다 :
mpTheMediaPlayer.Load(File.DirInternal, "114.mp3")
이 충돌하는 것 코드입니다
예, /data/data/your.app.package에 복사를 시도하고 있습니다. .name/myFiles하지만 "준비 실패"오류가 발생합니다. 미디어 플레이어를 사용하여 재생하는 파일을 복사하려고합니다. 또한 내가 사용하고있는 장치가 루팅되어 있지만 사용자의 장치가 뿌리를 내릴지 확실하지 않습니다. –
원본 게시물을 코드로 업데이트하고 스택 추적으로 예외를 수정하십시오. 그러면 살펴 보겠습니다. – kabuko
답장을 보내 주셔서 감사합니다. 코드와 로그로 게시물을 업데이트했습니다. –