こんにちは、私のsqlite dbをダウンロードしてコードにコピーする必要があります。しかし、(sd.canWrite())が常にfalseを返す場合...私はこれに固執し、はい私のマニフェストに既に追加されています。仮想デバイスではなく、実際のデバイスでデバッグしています。 TyのヘルプアンドロイドでSDカードに書き込むと常にFalseを返す
private void copyDbToExternal(Context context) {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()){
String currentDBPath = "//data//data//" + context.getApplicationContext().getPackageName() + "//databases//"
+ "qamatrisdb";
String backupDBPath = "qamatrisdb";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
いやのSRY。 WRITE_EXTERNAL_STORAGE "/>はまだfalseを書き込めます:( –
@keikoman:おそらくあなたの' '要素が間違った場所にあるか、' targetSdkVersion'が23以上です:https://commonsware.com /blog/2015/08/31/hey-where-did-my-permission-go.html –
CommonsWare