بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

تغییر صدای زنگ گوشی با کد !

مدیریت گفتگو
یزدانی 12 سال پیش
آخرین تغییر: 11 سال پیش

سلام دوستان بعد از کلی تلاش و جستجو بلاخره تونستم صدای زنگ رو از داخل برنامه تغییر بدم ! :D

گفتم اینجا بزارم تا دوستان هم استفاده کنن!

لطفا با لایک همراهی کنید !

خیلی کار سختی نیست و کلا تو کد مشخصه که چکار باید بکنید من این کد رو داخل یک دکمه استفاده کردم هرجاش مشکل داشتید بگید!

 Button btn1 = (Button) findViewById(R.id.btn1);
        btn1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                String filename = "yes.mp3";
File k = new File(G.DIR_PATH, filename); ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); values.put(MediaStore.MediaColumns.TITLE, "yes"); values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 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, false); //Insert it into the database Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null); Uri newUri = getContentResolver().insert(uri, values); RingtoneManager.setActualDefaultRingtoneUri(SoundActivity.this, RingtoneManager.TYPE_RINGTONE, newUri); } });

نظرات

Delna 11 سال پیش
دوستان من از این کد استقاده کردم.با کلیک روی دکمه آهنگ به عنوان رینگتون ست میشه اما وقتی تو تنظیمات میرم فقط اسمش هست.نه واقعا تنظیم شده نه پلی میشه.کسی میدونه مشکل چیه؟؟؟

پاسخ‌ها 5

Hajhosseini 12 سال پیش

دوست عزیز کدی که در بالا استفاده کردید کار میکنه ، ولی اگر گوشی رو ریست کنید رینگتون عوض میشه ، برای حل این مشکل فقط یک راه هست اونم اینه که رینگتون رو ابتدا در آدرس : 

 Environment.getExternalStorageDirectory() + "/media/" + fileName

کپی کنید ، و بعد دستورات ست کردن رینگتون که گفتید رو انجام بدید

نظرات

ATRAS 11 سال پیش

دوستان من این کدو تو گوشی وقتی اجرا میکنم برنامه دیگه نمیتونه ادامه بده بسته میشه.مشکل از کجاست.کد تقریبا شبیه به کد لینک بالاست.

   btnringtone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {

File k = new File(G.DIR_APP, item.musicname+ ".mp3");
if (k.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "" + item.musicname+ ".mp3");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(MediaStore.MediaColumns.SIZE, k.length());
values.put(MediaStore.Audio.Media.ARTIST, "avida ");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());
G.context.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null);
Uri newUri = G.currentActivity.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(G.context, RingtoneManager.TYPE_RINGTONE, newUri);

Toast.makeText(G.context, "زنگ تماس شما با موفقیت تغیر یافت.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(G.context, "فایل در حافظه شما موجود نمی باشد!", Toast.LENGTH_SHORT).show();
}

}
});

نظرات

احمد اسدی 11 سال پیش
این دسترسی رو به Manifast اضافه کردین ؟
احمد اسدی 11 سال پیش
کد کامل اینجا نمیشه کپی کرد. ==> android.permission.WRITE_EXTERNAL_STORAGE
ATRAS 11 سال پیش
بله اظافه کردم.تو جنیموشن خطایی نمیده ولی تو گوشی خطا میده معلومم نیست کجاشو ایراد میگیره.
احمد اسدی 11 سال پیش
خب از try catch استفاده کنید ببینم چه پیغام خطایی رو میده ؟
ATRAS 11 سال پیش

تو جنیموشن که خطا نمیده.تو گوشی خطا میده که نمیشه خطا رو خوند. ولی وقتی این تیکه از کدو برمیدارم دیگه خطا نمیده ولی زنگ گوشی هم تغییر نمیکنه.

 Uri newUri = G.currentActivity.getContentResolver().insert(uri, values);

نظرات

ATRAS 11 سال پیش


Writing exception to parcel
java.lang.SecurityException: Permission Denial: writing com.android.providers.settings.SettingsProvider uri content://settings/system from pid=7027, uid=10041 requires android.permission.WRITE_SETTINGS
at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:349)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:188)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:152)
at android.os.Binder.execTransact(Binder.java:338)
at dalvik.system.NativeStart.run(Native Method)
FATAL EXCEPTION: main
java.lang.SecurityException: Permission Denial: writing com.android.providers.settings.SettingsProvider uri content://settings/system from pid=7027, uid=10041 requires android.permission.WRITE_SETTINGS
at android.os.Parcel.readException(Parcel.java:1327)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:182)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:136)
at android.content.ContentProviderProxy.insert(ContentProviderNative.java:415)
at android.content.ContentResolver.insert(ContentResolver.java:730)
at android.provider.Settings$NameValueTable.putString(Settings.java:639)
at android.provider.Settings$System.putString(Settings.java:835)
at android.media.RingtoneManager.setActualDefaultRingtoneUri(RingtoneManager.java:656)
at jigsaw.avida.websampel.MynoheList$ViewHolder$4.onClick(MynoheList.java:196)
at android.view.View.performClick(View.java:3511)
at android.view.View$PerformClick.run(View.java:14105)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
channel '414f8c88 jigsaw.avida.websampel/jigsaw.avida.websampel.Activitymain (server)' ~ Channel is unrecoverably broken and will be disposed!
Received spurious receive callback for unknown input channel. fd=208, events=0x8

تو امولیتور اجرا کردم.این خطارو میده.

نظرات

یزدانی 11 سال پیش
سلام عزیز صدایی که میخوای ست کنی واسه زنگ تو مسیر برنامت هست (همون مسیری که واسه خوندن فایل بهش دادی)
ATRAS 11 سال پیش
نه.تو پوشه دانلودا هستش.
ATRAS 11 سال پیش
از دوستان کسی نبود مارو راهنمایی کنه؟
مجتبی یگانه 11 سال پیش
خطا میگه این مجوز رو میخوام که نداری com.android.providers.settings.SettingsProvider
ATRAS 11 سال پیش
ممنون مجتبی جون.دقیقا همین الان تو stack فهمیدم باید این مجوزو بهش بدم:)
ATRAS 11 سال پیش
این مجوزو میخواست. حالا تو گوشی سامسونگ دستور اجرا میشه و اهنگ تو لیست زنگ ها اظافه میشه ولی انتخابش گزینه بی صداس.قضیه چیه؟
ATRAS 11 سال پیش

 هر کاری کردم نتونستم بالا بنوسم.شرمنده.

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

در آخر با این مجوز و اظافه کردن این تیکه از کد.برنامه به درستی کار کرد:)

 G.currentActivity.getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + adres + "\"", null);

نظرات

Hossein Lamei Ramandi 11 سال پیش
دستت درد نکنه کارمو راه انداختی با این پرمیشن و دست همتون بابت کدها درد نکنه

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .