Perlu mengubah nada dering default dengan xamarin saya menggunakan android.net.parse dengan string jalur dan mengembalikan nol, kemudian saya menggunakan kode di bawah ini di mana saya menemukan online dan kembali mengembalikan nol ada yang bisa membantu?

var ring1 = ("file:////storage/emulated/0/Ringtones/" + item.ringtone);
     ContentValues values = new ContentValues();
                            
                            values.Put(MediaStore.IMediaColumns.Data, ring1);
                            values.Put(MediaStore.Audio.Media.InterfaceConsts.IsRingtone, true);
                            values.Put(MediaStore.IMediaColumns.MimeType, "audio/mp3");
                            
    
    
                            var uri = MediaStore.Audio.Media.GetContentUriForPath(path: ring1);
                            
    
                            Android.Net.Uri newUri = this.ContentResolver.Insert(uri, values);
    
    RingtoneManager.SetActualDefaultRingtoneUri(Android.App.Application.Context,RingtoneType.Ringtone, newUri);

"uri" dan "nilai" dalam debugging memiliki nilai tetapi parameter newUri adalah nol

0
johncanyon 19 September 2021, 15:29

2 jawaban

Jawaban Terbaik

Masalahnya ada di izin menulis saya menggunakan kode di bawah ini untuk memeriksa apakah file itu ada, minta izin dan ubah nada dering dan berfungsi

var newuri3 = Android.Net.Uri.Parse("file:///storage/emulated/0/Ringtones/" + item.ringtone);
                       
                        var newuri = newuri3;
                        bool b = false;
                        if (null != newuri)
                        {
                            try
                            {
                                var inputStream = Android.App.Application.Context.ContentResolver.OpenInputStream(newuri);
                                inputStream.Close();
                                Console.WriteLine("file exist");
                                b = true;
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("File corresponding to the uri does not exist " + newuri.ToString());
                            }
                        }

                        var bi = Settings.System.CanWrite(Android.App.Application.Context);
                        if (bi)
                        {
                            Console.WriteLine("it haw write permision");
                        }
                        else
                        {
                            Console.WriteLine("doenst have permision");
                            
                            

                            Intent intent = new Intent(Settings.ActionManageWriteSettings);
                            intent.SetData(Android.Net.Uri.Parse($"package:{Android.App.Application.Context.PackageName}"));
                            intent.AddFlags(ActivityFlags.NewTask);
                            Android.App.Application.Context.StartActivity(intent);

                        }

                      

                        RingtoneManager.SetActualDefaultRingtoneUri(Android.App.Application.Context, RingtoneType.Ringtone, newuri);

Di mana item.ringtone adalah nama file misalnya music.mp3

0
johncanyon 22 September 2021, 17:08

Anda perlu memeriksa ulang jalur ring1.

Saya menggunakan file di folder unduhan untuk referensi. Berhasil.

 var ring1 = System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, Android.OS.Environment.DirectoryDownloads, "sample.mp3");

Jika Anda ingin menggunakan Uri Nada Dering default, Anda dapat menggunakan kode di bawah ini sebagai gantinya.

  RingtoneManager.GetDefaultUri(RingtoneType.Ringtone)
0
Wendy Zang - MSFT 20 September 2021, 05:57