2017-07-08 75 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)你要問的運行權限

2)不要假設路徑爲/存儲/ sdcard1。這在設備之間有所不同通過getExternalFilesDirs請求名稱

+0

該應用程序僅適用於我和我的設備,在那裏我有Android 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

不,它是Android 5 –

+0

我現在有一個新手機,修改了路徑並提出了許可請求。仍然是相同的結果 –

+0

在這裏發佈日誌貓 –