diff options
author | Takeshi Aimi <aimitakeshi@gmail.com> | 2010-11-30 16:27:42 +0900 |
---|---|---|
committer | Takeshi Aimi <aimitakeshi@gmail.com> | 2010-11-30 16:27:42 +0900 |
commit | f05913aaa0cc96eab32be3431de1a80d405527a1 (patch) | |
tree | 808fc1b7a3fd2bdb3e88723fe4d4f457d1217f8f /drm/java | |
parent | f0f6c54b13831b11bd7a3bd7a01dc49b7505e56e (diff) | |
download | frameworks_base-f05913aaa0cc96eab32be3431de1a80d405527a1.zip frameworks_base-f05913aaa0cc96eab32be3431de1a80d405527a1.tar.gz frameworks_base-f05913aaa0cc96eab32be3431de1a80d405527a1.tar.bz2 |
DRM Framework bug fixes.
- Make sure to clean-up obsolete listeners.
- Close cursor after using it.
- Add virtual destructor to the base class of OnInfoListener.
Changes are made by SEMC and Sony.
Change-Id: Ibb6dd625ef48e3597188f0d7c90f9d4c780b6139
Diffstat (limited to 'drm/java')
-rw-r--r-- | drm/java/android/drm/DrmManagerClient.java | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/drm/java/android/drm/DrmManagerClient.java b/drm/java/android/drm/DrmManagerClient.java index 2f54b33..6caf678 100644 --- a/drm/java/android/drm/DrmManagerClient.java +++ b/drm/java/android/drm/DrmManagerClient.java @@ -738,26 +738,34 @@ public class DrmManagerClient { */ private String convertUriToPath(Uri uri) { String path = null; - String scheme = uri.getScheme(); - if (null == scheme || scheme.equals("") || scheme.equals(ContentResolver.SCHEME_FILE)) { - path = uri.getPath(); - } else if (scheme.equals(ContentResolver.SCHEME_CONTENT)) { - String[] projection = new String[] {MediaStore.MediaColumns.DATA}; - Cursor cursor = null; - try { - cursor = mContext.getContentResolver().query(uri, projection, null, null, null); - } catch (SQLiteException e) { - throw new IllegalArgumentException("Given Uri is not formatted in a way " + - "so that it can be found in media store."); - } - if (null == cursor || 0 == cursor.getCount() || !cursor.moveToFirst()) { - throw new IllegalArgumentException("Given Uri could not be found in media store"); + if (null != uri) { + String scheme = uri.getScheme(); + if (null == scheme || scheme.equals("") || + scheme.equals(ContentResolver.SCHEME_FILE)) { + path = uri.getPath(); + } else if (scheme.equals(ContentResolver.SCHEME_CONTENT)) { + String[] projection = new String[] {MediaStore.MediaColumns.DATA}; + Cursor cursor = null; + try { + cursor = mContext.getContentResolver().query(uri, projection, null, + null, null); + if (null == cursor || 0 == cursor.getCount() || !cursor.moveToFirst()) { + throw new IllegalArgumentException("Given Uri could not be found" + + " in media store"); + } + int pathIndex = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); + path = cursor.getString(pathIndex); + } catch (SQLiteException e) { + throw new IllegalArgumentException("Given Uri is not formatted in a way " + + "so that it can be found in media store."); + } finally { + if (null != cursor) { + cursor.close(); + } + } + } else { + throw new IllegalArgumentException("Given Uri scheme is not supported"); } - int pathIndex = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); - path = cursor.getString(pathIndex); - cursor.close(); - } else { - throw new IllegalArgumentException("Given Uri scheme is not supported"); } return path; } |