私は、Androidデバイスのデータディレクトリと外部領域にファイルをコピーする選択肢をユーザに与えたいと考えています。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
はい、コピーを/data/data/your.app.packageに書き込もうとしています.name/myFilesしかし、私は "準備ができていません"エラーが発生します。私はメディアプレーヤーを使って再生するファイルをコピーしようとしています。また、私が使用しているデバイスは根付いていますが、ユーザーのデバイスがルートされるかどうかはわかりません。 –
元のポストをコードで更新し、スタックトレースで例外を修正してみましょう。 – kabuko
返事をありがとう。コードとログで投稿を更新しました。 –