我想寫外部存儲文件的文件,但它給了我錯誤:不能寫在外部存儲
java.io.FileNotFoundException: /mnt/media_rw/sdcard1/Backup/Contact/18-03-2016 16:03:17.vcf: open failed: EACCES (Permission denied)
我的代碼:
fileContact = new File("/mnt/media_rw/sdcard1/", "Backup/Contact");
if (!fileContact.exists()) {
fileContact.mkdirs();
}
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:MM:ss");
String strDate = sdf.format(c.getTime());
StoragePath = fileContact.getAbsolutePath() + "/" + strDate + ".vcf";
當我寫fileContact = new File("/sdcard/", "/Backup/Contact");
則寫入文件internal storage
。我想在我的memory card(external sdcard)
上寫下這個文件。
我從此代碼獲取所有掛載/外部存儲列表 - http://stackoverflow.com/a/19982338/3774906
,它給了我完美的列表。
清單文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="com.xxx.xx"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-feature android:name="android.hardware.usb.host"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:autoRemoveFromRecents="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
所以,我怎麼能寫在外部存儲卡的文件?
請出示您的完整清單.... – Opiatefuchs
@Opiatefuchs添加了我的完整清單。 – deepak
並且不要硬編碼路徑。 Environment.getExternalStorageDirectory()。getAbsolutePath()將爲您提供sdcard的路徑。但請注意,有些製造商甚至會將您帶到virtuell sd卡。閱讀有關文檔路徑:http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory%28%29 – Opiatefuchs