android - setting raw resource as a ringtone -


i have read these 2 posts link1 , 1 link2 code not seem work me.

here code:

file newsoundfile = new file("/sdcard/media/ringtone", "myringtone.oog");             uri muri = uri.parse("android.resource://com.pack.android.myapp/r.raw.song1");             contentresolver mcr = main.this.getcontentresolver();             assetfiledescriptor soundfile;             try {                    soundfile= mcr.openassetfiledescriptor(muri, "r");                } catch (filenotfoundexception e) {                    soundfile=null;                   }                 try {                   byte[] readdata = new byte[1024];                   fileinputstream fis = soundfile.createinputstream();                   fileoutputstream fos = new fileoutputstream(newsoundfile);                   int = fis.read(readdata);                    while (i != -1) {                     fos.write(readdata, 0, i);                     = fis.read(readdata);                   }                    fos.close();                } catch (ioexception io) {                }                contentvalues values = new contentvalues();                values.put(mediastore.mediacolumns.data, newsoundfile.getabsolutepath());                values.put(mediastore.mediacolumns.title, "my ringtone");                values.put(mediastore.mediacolumns.mime_type, "audio/oog");                values.put(mediastore.mediacolumns.size, newsoundfile.length());                values.put(mediastore.audio.media.artist, r.string.app_name);                values.put(mediastore.audio.media.is_ringtone, true);                values.put(mediastore.audio.media.is_notification, true);                values.put(mediastore.audio.media.is_alarm, true);                values.put(mediastore.audio.media.is_music, false);                 uri uri = mediastore.audio.media.getcontenturiforpath(newsoundfile.getabsolutepath());                uri newuri = mcr.insert(uri, values);                  try {                    ringtonemanager.setactualdefaultringtoneuri(main.this, ringtonemanager.type_ringtone, newuri);                } catch (throwable t) {                   // log.d(tag, "catch exception");                } 

and getting force close. logcat here:

06-30 03:13:03.731: e/androidruntime(4187): fatal exception: main 06-30 03:13:03.731: e/androidruntime(4187): java.lang.nullpointerexception 06-30 03:13:03.731: e/androidruntime(4187):     @ com.pack.android.myapp.main.music(main.java:83) 06-30 03:13:03.731: e/androidruntime(4187):     @ com.pack.android.myapp.main$2.onclick(main.java:46) 06-30 03:13:03.731: e/androidruntime(4187):     @ android.view.view.performclick(view.java:2538) 06-30 03:13:03.731: e/androidruntime(4187):     @ android.view.view$performclick.run(view.java:9152) 06-30 03:13:03.731: e/androidruntime(4187):     @ android.os.handler.handlecallback(handler.java:587) 06-30 03:13:03.731: e/androidruntime(4187):     @ android.os.handler.dispatchmessage(handler.java:92) 06-30 03:13:03.731: e/androidruntime(4187):     @ android.os.looper.loop(looper.java:130) 06-30 03:13:03.731: e/androidruntime(4187):     @ android.app.activitythread.main(activitythread.java:3687) 06-30 03:13:03.731: e/androidruntime(4187):     @ java.lang.reflect.method.invokenative(native method) 06-30 03:13:03.731: e/androidruntime(4187):     @ java.lang.reflect.method.invoke(method.java:507) 06-30 03:13:03.731: e/androidruntime(4187):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:867) 06-30 03:13:03.731: e/androidruntime(4187):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:625) 06-30 03:13:03.731: e/androidruntime(4187):     @ dalvik.system.nativestart.main(native method) 

soundfile seems null. why that? song song1.mpe , in raw folder under res.

permission added in manifest:

<uses-permission android:name="android.permission.write_external_storage"/>     <uses-permission android:name="android.permission.write_settings"></uses-permission> 

put ringtone sound in assets folder , use code

uri path = uri.parse("android.resource://yourpackagename/raw/yoursoundfile") ringtonemanager.setactualdefaultringtoneuri(                     getapplicationcontext(), ringtonemanager.type_ringtone,                     path);             log .i("testt", "ringtone set resource: "+ path.tostring());             ringtonemanager.getringtone(getapplicationcontext(), path)                     .play(); 

add permission androidmanifest.xml:

<uses-permission android:name="android.permission.write_settings" /> 

Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c++ - Using OpenSSL in a multi-threaded application -

All overlapping substrings matching a java regex -