android - Create directory programaticly? -
how can create folder on sdcard on android device? want when click set ringtone-create folder , copy file if folder exists copy file. far i've en using this
private final file rpath = environment.getexternalstoragepublicdirectory(environment.directory_ringtones); private void s1ring() { boolean success = false; rsound = new file(rpath, "summer melody.mp3"); if (!rsound.exists()) { try { inputstream in = getresources().openrawresource(r.raw.s1beautiful); fileoutputstream out = new fileoutputstream(rsound.getpath()); byte[] buff = new byte[1024]; int read = 0; try { while ((read = in.read(buff)) > 0) { out.write(buff, 0, read); } } { in.close(); out.close(); } } catch (exception e) { success = false; } } else { success = true; setringtone(); } if (!success) { setringtone();
but noticed problem, on devices folders don't exist , file not copied. how can solve this?
logcat:
03-24 12:19:12.331: w/dalvikvm(26957): threadid=1: thread exiting uncaught exception (group=0x41c3b8b0) 03-24 12:19:12.331: e/androidruntime(26957): fatal exception: main 03-24 12:19:12.331: e/androidruntime(26957): java.lang.nullpointerexception 03-24 12:19:12.331: e/androidruntime(26957): @ gsoft.awesomeringtones.s01$1.setringtone(s01.java:102) 03-24 12:19:12.331: e/androidruntime(26957): @ gsoft.awesomeringtones.s01$1.s1ring(s01.java:89) 03-24 12:19:12.331: e/androidruntime(26957): @ gsoft.awesomeringtones.s01$1.onclick(s01.java:48) 03-24 12:19:12.331: e/androidruntime(26957): @ android.view.view.performclick(view.java:4421) 03-24 12:19:12.331: e/androidruntime(26957): @ android.view.view$performclick.run(view.java:17903) 03-24 12:19:12.331: e/androidruntime(26957): @ android.os.handler.handlecallback(handler.java:730) 03-24 12:19:12.331: e/androidruntime(26957): @ android.os.handler.dispatchmessage(handler.java:92) 03-24 12:19:12.331: e/androidruntime(26957): @ android.os.looper.loop(looper.java:213) 03-24 12:19:12.331: e/androidruntime(26957): @ android.app.activitythread.main(activitythread.java:5225) 03-24 12:19:12.331: e/androidruntime(26957): @ java.lang.reflect.method.invokenative(native method) 03-24 12:19:12.331: e/androidruntime(26957): @ java.lang.reflect.method.invoke(method.java:525) 03-24 12:19:12.331: e/androidruntime(26957): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:741) 03-24 12:19:12.331: e/androidruntime(26957): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:557) 03-24 12:19:12.331: e/androidruntime(26957): @ dalvik.system.nativestart.main(native method)
update
private file rsound; private void setringtone() { contentvalues values = new contentvalues(); values.put(mediastore.mediacolumns.data, rsound.getabsolutepath()); values.put(mediastore.mediacolumns.title, "summer melody"); values.put(mediastore.mediacolumns.mime_type, "audio/*"); values.put(mediastore.audio.media.artist, " "); values.put(mediastore.audio.media.is_ringtone, true); values.put(mediastore.audio.media.is_notification, false); values.put(mediastore.audio.media.is_alarm, false); values.put(mediastore.audio.media.is_music, true); uri uri = mediastore.audio.media.getcontenturiforpath(rsound.getabsolutepath()); getcontentresolver().delete(uri, mediastore.mediacolumns.data + "=\"" + rsound.getabsolutepath() + "\"", null); uri newuri = getcontentresolver().insert(uri, values); ringtonemanager.setactualdefaultringtoneuri( s01.this, ringtonemanager.type_ringtone, newuri); toast.maketext(getapplicationcontext(), "ringtone set successfully", toast.length_short).show(); } } );
to create directory in sdcard use mkdirs()
method follows...
file dir = new file(environment.getexternalstoragedirectory().getpath() + "/folderdir/"); dir.mkdirs();
Comments
Post a Comment