ContentProvider学习笔记

        MusicInfo data = params[0];
        String path = null;
        String musicTitle = data.getMusicName();
        if (data instanceof LocalMusicInfo) {
            path = ((LocalMusicInfo) data).getFilePath();
        } else {
            List<LocalMusicInfo> musics = NeteaseMusicApplication.getInstance().getDownloadManager().getCompleteTracksByIds(Arrays.asList(new Long[]{data.getId()}));
            if (musics.size() > 0) {
                path = musics.get(0).getFilePath();
            } else {
                return false;
            }
        }
        File[] files = new File(NeteaseMusicConst.workPath).listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String filename) {
                return filename.startsWith(NeteaseMusicConst.cloudMusicRingtonePrex);
            }
        });
        if (files != null) {
            for (File file : files) {
                if (!file.isDirectory()) {
                    file.delete();
                }
            }
        }
        String ringtonePath = NeteaseMusicConst.ringtonePath + System.currentTimeMillis();
        if (!FileUtils.copy(path, ringtonePath, false)) {
            return false;
        }
        ContentValues values = new ContentValues();
        values.put(MediaStore.MediaColumns.DATA, ringtonePath);
        values.put(MediaStore.MediaColumns.TITLE, musicTitle);
        values.put(MediaStore.MediaColumns.DISPLAY_NAME, musicTitle);
        values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
        values.put(MediaStore.Audio.Media.ARTIST, data.getSingerName());
        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);
        Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtonePath);
        context.getContentResolver().delete(uri, String.format("%s='%s'", MediaColumns.DATA, ringtonePath), null);
        Uri newUri = context.getContentResolver().insert(uri, values);
        try {
            RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, newUri);
            return true;
        } catch (Throwable t) {
            return false;
        }
View Code

 

posted @ 2016-04-05 14:33  lya_nju  阅读(114)  评论(0编辑  收藏  举报