搜尋

首頁  >  問答  >  主體

android - 安卓6.0,获取手机的音乐文件(华为荣耀 7)?

    ContentResolver musicResolver = getContentResolver();
    Uri musicUri = android.provider.MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
    Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);

为什么我使用以上的代码获取不到我手机里面的音乐? 调试发现 musicResolver.query() 是这个函数有问题,然后进入这个函数后,发现内部的变量 cursor 为 null ,没有找到本地的音乐文件?那要用什么方法得到本地的音乐文件信息?

伊谢尔伦伊谢尔伦2812 天前832

全部回覆(2)我來回復

  • PHPz

    PHPz2017-04-18 09:21:16

    可能是我這支手機的問題,今天我用同學的代碼,結果在他的手機上就能獲取到音樂,然後將代碼下載到我的荣耀7 上就不行,我又把代码下到另外一个同学荣耀8 的手機上,結果也不行,果然是手機的問題,不是程式碼的問題,然後我就去搜了下相關的文章,終於被我找到了:

    // Storage Permissions
        private static final int REQUEST_EXTERNAL_STORAGE = 1;
        private static String[] PERMISSIONS_STORAGE = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };
    public static void verifyStoragePermissions(Activity activity) {
            // Check if we have write permission
            int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    
            if (permission != PackageManager.PERMISSION_GRANTED) {
                // We don't have permission so prompt the user
                ActivityCompat.requestPermissions(
                        activity,
                        PERMISSIONS_STORAGE,
                        REQUEST_EXTERNAL_STORAGE
                );
            }
        }

    將上面的程式碼放到你要找音樂檔案的那個類別裡面,最後查找音樂時,呼叫上面那個方法就是了。上面的意思是檢查是否有相應的權限,如果沒有相應的權限的話就提升權限(果然是權限問題,只是沒想到的是其他手機能正常運行,目前榮耀的兩款手機不行運行,好坑,浪費我好多時間啊,,,)

    最後將一下程式碼放在 manifest 中。

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

    現在來說,應該就可以了,如果還不行,可以私訊我。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:21:16

    直接使用MediaStore.Audio.Media. EXTERNAL_CONTENT_URI試下

    回覆
    0
  • 取消回覆