通过文件名获取uri

private Uri parsePath(String path) {
        String fullPath = "silent";
        if (!"".equals(path) && !"silent".equalsIgnoreCase(path)) {
            fullPath = Environment.getCustpackDirectory()
                    + "/audio/" + path;
        }
        Log.d(TAG, "fullPath = " + fullPath);
        Log.d(TAG, "uri = " + getUri(fullPath));
        return getUri(fullPath);
    }

    private Uri getUri(String path) {
        String uriString;
        Cursor internalCursor = getInternalRingtones(path);
        if (internalCursor != null) {
            if (internalCursor.getCount() > 0) {
                internalCursor.moveToFirst();
                uriString = MediaStore.Audio.Media.INTERNAL_CONTENT_URI
                        + "/"
                        + internalCursor.getString(internalCursor
                                .getColumnIndex("_id"));
                return Uri.parse(uriString);
            }
            internalCursor.close();
        }

        Cursor mediaCursor = getMediaRingtones(path);
        if (mediaCursor != null) {
            if (mediaCursor.getCount() > 0) {
                mediaCursor.moveToFirst();
                uriString = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
                        + "/"
                        + mediaCursor.getString(mediaCursor
                                .getColumnIndex("_id"));
                return Uri.parse(uriString);
            }
            mediaCursor.close();
        }
        return null;
    }

    private Cursor getInternalRingtones(String path) {
        return mContext.getContentResolver().query(
                MediaStore.Audio.Media.INTERNAL_CONTENT_URI,
                new String[] {
                        MediaStore.Audio.Media._ID,
                        MediaStore.Audio.Media.DATA,
                        "\"" + MediaStore.Audio.Media.INTERNAL_CONTENT_URI
                                + "\"", MediaStore.Audio.Media.TITLE_KEY
                },
                "_data=?", new String[] {
                    path
                },
                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
    }

    private Cursor getMediaRingtones(String path) {
        final String status = Environment.getExternalStorageState();

        return (status.equals(Environment.MEDIA_MOUNTED) || status
                .equals(Environment.MEDIA_MOUNTED_READ_ONLY)) ? mContext
                .getContentResolver().query(
                        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                        new String[] {
                                MediaStore.Audio.Media._ID,
                                MediaStore.Audio.Media.DATA,
                                MediaStore.Audio.Media.TITLE_KEY
                        }, "_data=?",
                        new String[] {
                            path
                        },
                        MediaStore.Audio.Media.DEFAULT_SORT_ORDER) : null;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值