summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-10-29 19:16:27 -0400
committerMike Lockwood <lockwood@android.com>2010-11-01 19:15:55 -0400
commit2b5f9ad1eaf0d6daaca5cf3761434a09309902bb (patch)
tree3a9efcc9a3ccc11399cfcb1d5b37a07158fdbaf7 /media
parent7d5411fd3f08326d88142bc8f83ad41405893471 (diff)
downloadframeworks_base-2b5f9ad1eaf0d6daaca5cf3761434a09309902bb.zip
frameworks_base-2b5f9ad1eaf0d6daaca5cf3761434a09309902bb.tar.gz
frameworks_base-2b5f9ad1eaf0d6daaca5cf3761434a09309902bb.tar.bz2
MTP: Changes to support /mnt/sdcard paths from MediaProvider.
Change-Id: I337f0514c20ed31738c73e1f7ab6fb71cc744057 Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media')
-rw-r--r--media/java/android/media/MtpDatabase.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/media/java/android/media/MtpDatabase.java b/media/java/android/media/MtpDatabase.java
index 51647434..57ab3a1 100644
--- a/media/java/android/media/MtpDatabase.java
+++ b/media/java/android/media/MtpDatabase.java
@@ -23,6 +23,7 @@ import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
+import android.os.Environment;
import android.os.RemoteException;
import android.provider.MediaStore.Audio;
import android.provider.MediaStore.Files;
@@ -45,6 +46,7 @@ public class MtpDatabase {
private final String mVolumeName;
private final Uri mObjectsUri;
private final String mMediaStoragePath;
+ private final String mExternalStoragePath;
// true if the database has been modified in the current MTP session
private boolean mDatabaseModified;
@@ -77,7 +79,6 @@ public class MtpDatabase {
Files.FileColumns.DATE_MODIFIED, // 5
};
private static final String ID_WHERE = Files.FileColumns._ID + "=?";
- private static final String PATH_WHERE = Files.FileColumns.DATA + "=?";
private static final String PARENT_WHERE = Files.FileColumns.PARENT + "=?";
private static final String PARENT_FORMAT_WHERE = PARENT_WHERE + " AND "
+ Files.FileColumns.FORMAT + "=?";
@@ -98,6 +99,7 @@ public class MtpDatabase {
mMediaProvider = context.getContentResolver().acquireProvider("media");
mVolumeName = volumeName;
mMediaStoragePath = storagePath;
+ mExternalStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();
mObjectsUri = Files.getMtpObjectsUri(volumeName);
mMediaScanner = new MediaScanner(context);
openDevicePropertiesDatabase(context);
@@ -112,6 +114,16 @@ public class MtpDatabase {
}
}
+ private String externalToMediaPath(String path) {
+ // convert external storage path to media path
+ if (path != null && mMediaStoragePath != null
+ && mExternalStoragePath != null
+ && path.startsWith(mExternalStoragePath)) {
+ path = mMediaStoragePath + path.substring(mExternalStoragePath.length());
+ }
+ return path;
+ }
+
private void openDevicePropertiesDatabase(Context context) {
mDevicePropDb = context.openOrCreateDatabase("device-properties", Context.MODE_PRIVATE, null);
int version = mDevicePropDb.getVersion();
@@ -482,7 +494,7 @@ public class MtpDatabase {
try {
c = mMediaProvider.query(mObjectsUri, PATH_PROJECTION, ID_WHERE, whereArgs, null);
if (c != null && c.moveToNext()) {
- path = c.getString(1);
+ path = externalToMediaPath(c.getString(1));
}
} catch (RemoteException e) {
Log.e(TAG, "RemoteException in getObjectFilePath", e);
@@ -763,7 +775,7 @@ public class MtpDatabase {
return true;
}
} catch (RemoteException e) {
- Log.e(TAG, "RemoteException in getObjectProperty", e);
+ Log.e(TAG, "RemoteException in getObjectInfo", e);
} finally {
if (c != null) {
c.close();
@@ -786,7 +798,7 @@ public class MtpDatabase {
c = mMediaProvider.query(mObjectsUri, PATH_SIZE_PROJECTION,
ID_WHERE, new String[] { Integer.toString(handle) }, null);
if (c != null && c.moveToNext()) {
- String path = c.getString(1);
+ String path = externalToMediaPath(c.getString(1));
path.getChars(0, path.length(), outFilePath, 0);
outFilePath[path.length()] = 0;
outFileLength[0] = c.getLong(2);