Sorry for the ambiguous title but I'm doing the following to write a 开发者_StackOverflow社区simple string to a file:
try {
File root = Environment.getExternalStorageDirectory();
if (root.canWrite()){
System.out.println("Can write.");
File def_file = new File(root, "default.txt");
FileWriter fw = new FileWriter(def_file);
BufferedWriter out = new BufferedWriter(fw);
String defbuf = "default";
out.write(defbuf);
out.flush();
out.close();
}
else
System.out.println("Can't write.");
}catch (IOException e) {
e.printStackTrace();
}
But root.canWrite()
seems to be returning false everytime. I am not running this off of an emulator, I have my android Eris plugged into my computer via USB and running the app off of my phone via Eclipse. Is there a way of giving my app permission so this doesn't happen?
Also, this code seems to be create the file default.txt
but what if it already exists, will it ignore the creation and just open it to write or do I have to catch something like FileAlreadyExists
(if such an exception exists) which then just opens it and writes?
Thanks for any help guys.
Is there a way of giving my app permission so this doesn't happen?
You need the WRITE_EXTERNAL_STORAGE
permission.
You also need to not have the SD card mounted on your development machine -- either the computer or the phone can access the SD card, but not both at the same time.
add WRITE_EXTERNAL_STORAGE permission to your manifest file
and if it is necessary do the following
- plug the droid into your computer
- pull down the manager (the bar on top with the time, sorry don't know the name, can't recall right now)
- hit "usb connected"
- window pops up on your computer showing you the contents of the SD card
- hit "turn off usb storage" when you're done
- disconnect usb cable (if you want) and then your Droid can read the SD card again
精彩评论