2017-07-08 17 views
0

私のアプリケーションは、外部のSDカードへの書き込み権限を持っていないようです。私はそれを読むことができますが、執筆は内部のもの(sdcard0)でのみ動作します。 私がしよう外部sdカードのwirteは動作しません

File f = new File("/storacge/sdcard1/Test/file.mp3"); 
boolean b = f.delete(); 

は、bがfalseで、ファイルがまだ存在しています。でも、私はMediaPlayerでプレイできます。

私は私が間違って何をして、私のマニフェスト

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>をやっていますか?

答えて

1

1)あなたは、パスが/ストレージ/ sdcard1であることを前提としないでくださいランタイム権限

2)をお願いする必要があります。それはデバイスによって異なります。名前を取得するにはgetExternalFilesDirs

+0

アプリは私とアンドロイド5しか持っていないため、実行時の権限はなく、最終バージョンではパスはハードコーディングされません –

0

Android 6.0以上で作業している場合は、必要な場所で正確にアクセス権を要求する必要があります。

のようなあなたの活動の方法を作成します。

public void askForWritePermissions(){ 
    //If android marshmellow or higher 
    if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){ 
     //If permissions are not granted 
     if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){ 
      requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},2); 

     } 
    } 
} 

をそして、あなたが必要とする方のイベントで上記のメソッドを呼び出します。ユーザーがアクセスを許可するか、アクセス許可を与えないと、onRequestPermissionsResult()が呼び出されますので、そのメソッドを適切に処理するようにしてください。

+0

いいえ、それはアンドロイドです5 –

+0

私は今、新しい電話を持っていますパスを変更し、許可要求を受け入れました。まだ同じ結果が –

+0

投稿ログcatはここに –

関連する問題