亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于項目中audio文件無法播放的報告

發布時間:2020-07-03 16:47:51 來源:網絡 閱讀:1312 作者:HDDevTeam 欄目:移動開發

BUG現象

         Nexus5等部分機型(安卓4.4版本)出現選擇自定義鈴聲后無法播放的現象。

BUG 原因  

4.4的某些機型 使用的intent.setAction(Intent.ACTION_GET_CONTENT)獲取的uri

content://com.android.providers.media.documents/document/audio%3A1407

這種格式的uri在播放音樂的方法中不識別報錯

 

4.3及以下版本使用的intent.setAction(Intent.ACTION_GET_CONTENT)獲取的uri

content://media/external/audio/media/91613

可以正常播放

 

解決辦法

以下是Google developer.android.com 官方網頁對Android 4.4 APIs的相關改動說明

 

Storage accessframework

On previousversions of Android, if you want your app to retrieve a specific type of filefrom another app, it must invoke an intent with the ACTION_GET_CONTENT action.This action is still the appropriate way to request a file that you want toimport intoyour app. However, Android 4.4 introduces the ACTION_OPEN_DOCUMENT action,which allows the user to select a file of a specific type and grant your applong-term read access to that file (possibly with write access) withoutimporting the file to your app.

其中提到了:

4.3或以下可以直接用ACTION_GET_CONTENT,4.4或以上,官方建議用ACTION_OPEN_DOCUMENT

 

但是根據其說明ACTION_GET_CONTENT是可以用的,只是ACTION_OPEN_DOCUMENT被推薦而已。但是事實上某些4.4機型(neuxs 5等)如果還用ACTION_GET_CONTENT的方法,返回的uri4.3是完全不一樣的,4.3返回的是帶文件路徑的,4.4返回的卻是content://com.android.providers.media.documents/document/audio:3951這樣的,沒有路徑,只有音頻編號的uri.

 

所以為了解決這種問題,我們嘗試使用Google推薦的ACTION_OPEN_DOCUMENT action

測試結果顯示,使用官方推薦的action解決了項目中的問題

代碼如下:

 

  原代碼:

 

                            case 1:

                                IntentintentMyRingtone = new Intent(

                                        Intent.ACTION_GET_CONTENT);

                                intentMyRingtone.setType("audio/*");

                                intentMyRingtone                                                            .setAction(Intent.ACTION_GET_CONTENT);

                                startActivityForResult(intentMyRingtone,

                                        SELECT_MY_RINGTONE);

                                break;

更改以后的代碼:

case 1:

                                IntentintentMyRingtone = new Intent(

                                Intent.ACTION_GET_CONTENT);

                                intentMyRingtone.setType("audio/*");

 

                                if (Build.VERSION.SDK_INT < 19) {

                                intentMyRingtone

                                .setAction(Intent.ACTION_GET_CONTENT);

 

                                }else{

                                intentMyRingtone

                                .setAction(Intent.ACTION_OPEN_DOCUMENT);

                                }

                                startActivityForResult(intentMyRingtone,

                                SELECT_MY_RINGTONE);

                                break;

經驗教訓總結

機型問題有時候總是伴隨著版本問題,遇到問題關注Android版本的不同有時候很重要。

前期問題沒改出來也是沒有考慮到報錯手機的一直特征是4.4.

         Google搜索的關鍵詞也很重要,它有時候決定整個你修改bug的方向問題,提煉出正確的搜索關鍵字能夠快速找到相關的文章,提供了別人解決問題的經驗。

         關注Android版本更新,了解重要的更新說明,項目的很多bug都是Android版本更新后,項目中的代碼不適用造成的。


另外:很多開發人員也經常遇到p_w_picpath獲取的問題


另附兩個地址供遇到p_w_picpath文件獲取uri問題的朋友參考:http://blog.csdn.net/eastman520/article/details/17756817

http://blog.csdn.net/tempersitu/article/details/20557383



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桂阳县| 大同县| 吉木萨尔县| 格尔木市| 启东市| 桓台县| 景谷| 梓潼县| 民县| 鹤庆县| 阳谷县| 昌平区| 城口县| 湘阴县| 高平市| 枝江市| 延长县| 乡宁县| 奉新县| 安泽县| 马鞍山市| 保山市| 南康市| 绵竹市| 凤凰县| 五家渠市| 滁州市| 通许县| 苍山县| 榆树市| 尚义县| 买车| 浮山县| 昌吉市| 新津县| 赣榆县| 丽江市| 惠来县| 栾川县| 宝鸡市| 金坛市|