Android 設置鈴聲

在網上找了很多關於鈴聲設置的,不曉得怎麼回事就是沒測試通過,後來換了另外一種方式解決了。回過頭來看了一下原理是一樣的,於是就把兩者合併到了一起。原理:首先根據傳進來的絕對路徑來查詢傳進來路徑的歌曲是否存在,如果存在則得到id和uri,通過ContentUris.withAppendedId(uri,id),將uri和id拼接成一個新的Uri,然後將新的uri設置成想要的鈴聲即可。

最主要的代碼:RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);

第一個參數表示上下文、第二個參數表示設置的鈴聲狀態,第三個表示當前的歌曲uri。

如果傳進來的歌曲路徑不存在,則直接調用系統的插入數據方法,得到一個返回的uri,這裏得到的uri是不帶id參數的,不曉得爲什麼,這樣設置鈴聲是不成功的。我想到的笨方法是,在插入數據之後應該立即發送廣播讓系統掃描媒體數據,然後來查詢得到新的uri,然後再來設置。不曉得哪位大牛有什麼好的方法能夠借鑑一下。

按 Ctrl+C 複製代碼
按 Ctrl+C 複製代碼
這是之前在網上搜索的普遍方法,按照這個方法得到的uri是不帶id參數的。只是將傳入的文件添加到系統的媒體數據庫中。
按 Ctrl+C 複製代碼
按 Ctrl+C 複製代碼

另外一種方法是調用系統的設置鈴聲的方法。如果不加自定義鈴聲的方法則調用的是系統默認的鈴聲設置。若添加了上面自定義鈴聲的代碼則會將傳進來的鈴聲

添加到鈴聲設置列表中供你選擇。

按 Ctrl+C 複製代碼
按 Ctrl+C 複製代碼

最後需要添加修改系統設置的權限:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章