DrmManagerClient适用于本地文件,但不适用于服务器中的文件

时间:2014-06-18 07:05:20

标签: android drm android-drm

我正在尝试在我的应用程序中实现DRM 但我遇到了一个问题。 canHandle()始终返回false DrmManagerClient.getOriginalMimeType(Uri);始终为http链接返回null 但是对于存储中的文件,一切都运行正常。

DrmManagerClient mDrmManager;
mDrmManager = new DrmManagerClient(this);
String testUri = myUrl;
String mimeType = getOriginalMimeType( testUri );

下面是获取mimetype的方法,但遗憾的是canHandle()总是返回false。

    // get MimeType
public String getOriginalMimeType(String uri){
    String mime = null;

    try {
        if( mDrmManager.canHandle(Uri.parse(uri), null) ){
            mime = mDrmManager.getOriginalMimeType(Uri.parse(uri));
        }
    } catch (Exception e) {
        Log.w(TAG, e.toString());
    }

    return mime;
}

我错过了什么吗? 显而易见的可能是我使用的网址不好,但是 我尝试过在不同的应用程序中使用的不同URL但结果是一样的 我也在清单文件中设置了INTERNET权限。我的想法已经不多了。问题是什么 在深入研究DrmManagerClient源代码之后,我注意到canHandle()的定义如下:

/**
 * Checks whether the given MIME type or URI can be handled.
 *
 * @param uri URI for the content to be handled.
 * @param mimeType MIME type of the object to be handled
 *
 * @return True if the given MIME type or URI can be handled; false if they cannot be handled.
 */
public boolean canHandle(Uri uri, String mimeType) {
    if ((null == uri || Uri.EMPTY == uri) && (null == mimeType || mimeType.equals(""))) {
        throw new IllegalArgumentException("Uri or the mimetype should be non null");
    }
    return canHandle(convertUriToPath(uri), mimeType);
}

canHandle(Uri uri , String mimeType)基本上与canHandle( String path, mimeType )相同,因为它将Uri转换为路径 这是否意味着Http Urls不会工作?

1 个答案:

答案 0 :(得分:0)

我发现问题出在网址上 我测试了这两个链接,现在一切都很好。

第1流:http://commondatastorage.googleapis.com/wvmedia/sintel_main_720p_4br_tp.wvm

第2流:http://commondatastorage.googleapis.com/wvmedia/starz_main_720p_6br_tp.wvm

希望将来帮助某人。