下面列出了怎么用android.provider.MediaStore.MediaColumns的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* 获取图片路径
*
* @param uri
* @param
*/
public static String getImagePath(Uri uri, Activity context) {
String[] projection = {MediaColumns.DATA};
Cursor cursor = context.getContentResolver().query(uri, projection,
null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columIndex = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
String ImagePath = cursor.getString(columIndex);
cursor.close();
return ImagePath;
}
return uri.toString();
}
/**
* Get an Uri from an file path.
*
* @param path The file path.
* @return The Uri.
*/
public static Uri getUriFromFile(final String path, final Context c) {
ContentResolver resolver = c.getContentResolver();
Cursor filecursor = resolver.query(MediaStore.Files.getContentUri("external"),
new String[] {BaseColumns._ID}, MediaColumns.DATA + " = ?",
new String[] {path}, MediaColumns.DATE_ADDED + " desc");
if (filecursor == null) {
return null;
}
filecursor.moveToFirst();
if (filecursor.isAfterLast()) {
filecursor.close();
ContentValues values = new ContentValues();
values.put(MediaColumns.DATA, path);
return resolver.insert(MediaStore.Files.getContentUri("external"), values);
}
else {
int imageId = filecursor.getInt(filecursor.getColumnIndex(BaseColumns._ID));
Uri uri = MediaStore.Files.getContentUri("external").buildUpon().appendPath(
Integer.toString(imageId)).build();
filecursor.close();
return uri;
}
}
public static List<Playlist> getMp3List(Context context) {
List<Playlist> list = new ArrayList<Playlist>();
Cursor cursor = new ResolverSer().getResolverSer().getResover(context).query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, media_info, "",
null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
if (cursor != null && cursor.getCount() == 0) {
final AlertDialog xfdialog = new AlertDialog.Builder(context).setTitle("Tips:").setMessage(context.getResources().getString(R.string.music_no_one)).setPositiveButton(context.getResources().getString(R.string.is_positive), null).create();
xfdialog.show();
cursor.close();
return null;
}
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
int album_id = cursor.getInt(cursor.getColumnIndex(AudioColumns.ALBUM_ID));
String title = cursor.getString(cursor.getColumnIndex(MediaColumns.TITLE));
String artist = cursor.getString(cursor.getColumnIndex(AudioColumns.ARTIST));
int duration = cursor.getInt(cursor.getColumnIndex(AudioColumns.DURATION));
if (duration > 30000) {
Playlist playlist = new Playlist(id, title, duration, artist, album_id);
list.add(playlist);
}
}
cursor.close();
return list;
}
public static Uri getUriFromFile(final String path, Context context) {
ContentResolver resolver = context.getContentResolver();
Cursor filecursor = resolver.query(MediaStore.Files.getContentUri("external"),
new String[]{BaseColumns._ID}, MediaColumns.DATA + " = ?",
new String[]{path}, MediaColumns.DATE_ADDED + " desc");
filecursor.moveToFirst();
if (filecursor.isAfterLast()) {
filecursor.close();
ContentValues values = new ContentValues();
values.put(MediaColumns.DATA, path);
return resolver.insert(MediaStore.Files.getContentUri("external"), values);
} else {
int imageId = filecursor.getInt(filecursor.getColumnIndex(BaseColumns._ID));
Uri uri = MediaStore.Files.getContentUri("external").buildUpon().appendPath(
Integer.toString(imageId)).build();
filecursor.close();
return uri;
}
}
/**
* @param context
* @param id
* @return
*/
public static long[] getSongListForGenre(Context context, long id) {
String[] projection = new String[] {
BaseColumns._ID
};
StringBuilder selection = new StringBuilder();
selection.append(AudioColumns.IS_MUSIC + "=1");
selection.append(" AND " + MediaColumns.TITLE + "!=''");
Uri uri = Genres.Members.getContentUri(EXTERNAL, id);
Cursor cursor = context.getContentResolver().query(uri, projection, selection.toString(),
null, null);
if (cursor != null) {
long[] list = getSongListForCursor(cursor);
cursor.close();
return list;
}
return sEmptyList;
}
/**
* Create a Search Chooser
*/
public static void doSearch(Context mContext, Cursor mCursor, String Type) {
CharSequence title = null;
Intent i = new Intent();
i.setAction(MediaStore.INTENT_ACTION_MEDIA_SEARCH);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
String query = "";
if ( Type == TYPE_ALBUM ){
query = mCursor.getString(mCursor.getColumnIndexOrThrow(AlbumColumns.ALBUM));
}
else if( Type == TYPE_ARTIST ){
query = mCursor.getString(mCursor.getColumnIndexOrThrow(ArtistColumns.ARTIST));
}
else if( Type == TYPE_GENRE || Type == TYPE_PLAYLIST || Type == TYPE_SONG ){
query = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaColumns.TITLE));
}
title = "";
i.putExtra("", query);
title = title + " " + query;
title = "Search " + title;
i.putExtra(SearchManager.QUERY, query);
mContext.startActivity(Intent.createChooser(i, title));
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
if( mFragmentGroupId != 0 ){
menu.add(mFragmentGroupId, PLAY_SELECTION, 0, getResources().getString(R.string.play_all));
menu.add(mFragmentGroupId, ADD_TO_PLAYLIST, 0, getResources().getString(R.string.add_to_playlist));
menu.add(mFragmentGroupId, USE_AS_RINGTONE, 0, getResources().getString(R.string.use_as_ringtone));
menu.add(mFragmentGroupId, REMOVE, 0, R.string.remove);
menu.add(mFragmentGroupId, SEARCH, 0, getResources().getString(R.string.search));
AdapterContextMenuInfo mi = (AdapterContextMenuInfo)menuInfo;
mSelectedPosition = mi.position;
mCursor.moveToPosition(mSelectedPosition);
try {
mSelectedId = mCursor.getLong(mCursor.getColumnIndexOrThrow(mMediaIdColumn));
} catch (IllegalArgumentException ex) {
mSelectedId = mi.id;
}
String title = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaColumns.TITLE));
menu.setHeaderTitle(title);
}
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String[] projection = new String[] {
BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST,
};
StringBuilder selection = new StringBuilder();
Uri uri = Audio.Media.EXTERNAL_CONTENT_URI;
String sortOrder = Audio.Media.DEFAULT_SORT_ORDER;
uri = Audio.Media.EXTERNAL_CONTENT_URI;
long[] mNowPlaying = MusicUtils.getQueue();
if (mNowPlaying.length == 0)
return null;
selection = new StringBuilder();
selection.append(BaseColumns._ID + " IN (");
if (mNowPlaying == null || mNowPlaying.length <= 0)
return null;
for (long queue_id : mNowPlaying) {
selection.append(queue_id + ",");
}
selection.deleteCharAt(selection.length() - 1);
selection.append(")");
return new AddIdCursorLoader(getActivity(), uri, projection, selection.toString(), null,
sortOrder);
}
/**
* Reload the queue after we remove a track
*/
private void reloadQueueCursor() {
String[] projection = new String[] {
BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST,
};
StringBuilder selection = new StringBuilder();
Uri uri = Audio.Media.EXTERNAL_CONTENT_URI;
String sortOrder = Audio.Media.DEFAULT_SORT_ORDER;
uri = Audio.Media.EXTERNAL_CONTENT_URI;
long[] mNowPlaying = MusicUtils.getQueue();
if (mNowPlaying.length == 0)
return;
selection = new StringBuilder();
selection.append(BaseColumns._ID + " IN (");
if (mNowPlaying == null || mNowPlaying.length <= 0)
return;
for (long queue_id : mNowPlaying) {
selection.append(queue_id + ",");
}
selection.deleteCharAt(selection.length() - 1);
selection.append(")");
mCursor = MusicUtils.query(getActivity(), uri, projection, selection.toString(), null,
sortOrder);
mQuickQueueAdapter.changeCursor(mCursor);
}
@Override
public void setupFragmentData() {
mAdapter = new AlbumListAdapter(getActivity(), R.layout.music_listview_items, null,
new String[] {}, new int[] {}, 0);
mProjection = new String[] {
BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST
};
StringBuilder where = new StringBuilder();
where.append(AudioColumns.IS_MUSIC + "=1")
.append(" AND " + MediaColumns.TITLE + " != ''");
long albumId = getArguments().getLong(BaseColumns._ID);
where.append(" AND " + AudioColumns.ALBUM_ID + "=" + albumId);
mWhere = where.toString();
mSortOrder = Audio.Media.TRACK + ", " + Audio.Media.DEFAULT_SORT_ORDER;
mUri = Audio.Media.EXTERNAL_CONTENT_URI;
mFragmentGroupId = 89;
mType = TYPE_ALBUM;
mTitleColumn = MediaColumns.TITLE;
}
public void setupFragmentData(){
mAdapter = new RecentlyAddedAdapter(getActivity(), R.layout.music_listview_items,
null, new String[] {}, new int[] {}, 0);
mProjection = new String[] {
BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST
};
StringBuilder where = new StringBuilder();
int X = MusicUtils.getIntPref(getActivity(), NUMWEEKS, 5) * 3600 * 24 * 7;
where.append(MediaColumns.TITLE + " != ''");
where.append(" AND " + AudioColumns.IS_MUSIC + "=1");
where.append(" AND " + MediaColumns.DATE_ADDED + ">"
+ (System.currentTimeMillis() / 1000 - X));
mWhere = where.toString();
mSortOrder = MediaColumns.DATE_ADDED + " DESC";
mUri = Audio.Media.EXTERNAL_CONTENT_URI;
mTitleColumn = MediaColumns.TITLE;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (data == null) {
return;
}
long[] mNowPlaying = MusicUtils.getQueue();
String[] audioCols = new String[] { BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ARTIST, AudioColumns.ALBUM};
MatrixCursor playlistCursor = new MatrixCursor(audioCols);
for(int i = 0; i < mNowPlaying.length; i++){
data.moveToPosition(-1);
while (data.moveToNext()) {
long audioid = data.getLong(data.getColumnIndexOrThrow(BaseColumns._ID));
if( audioid == mNowPlaying[i]) {
String trackName = data.getString(data.getColumnIndexOrThrow(MediaColumns.TITLE));
String artistName = data.getString(data.getColumnIndexOrThrow(AudioColumns.ARTIST));
String albumName = data.getString(data.getColumnIndexOrThrow(AudioColumns.ALBUM));
playlistCursor.addRow(new Object[] {audioid, trackName, artistName, albumName });
}
}
}
data.close();
mCursor = playlistCursor;
super.onLoadFinished(loader, playlistCursor);
}
public void setupFragmentData(){
mAdapter = new GenreListAdapter(getActivity(), R.layout.music_listview_items, null,
new String[] {}, new int[] {}, 0);
mProjection = new String[] {
BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM,
AudioColumns.ARTIST
};
StringBuilder where = new StringBuilder();
where.append(AudioColumns.IS_MUSIC + "=1").append(
" AND " + MediaColumns.TITLE + " != ''");
mWhere = where.toString();
mSortOrder = Genres.Members.DEFAULT_SORT_ORDER;
mUri = Genres.Members.getContentUri(EXTERNAL, getArguments().getLong(BaseColumns._ID));
mFragmentGroupId = 3;
mType = TYPE_GENRE;
mTitleColumn = MediaColumns.TITLE;
}
@Override
public void setupFragmentData(){
mAdapter = new ArtistListAdapter(getActivity(), R.layout.music_listview_items, null,
new String[] {}, new int[] {}, 0);
mProjection = new String[] {
BaseColumns._ID, MediaColumns.TITLE, AudioColumns.ALBUM, AudioColumns.ARTIST
};
StringBuilder where = new StringBuilder();
where.append(AudioColumns.IS_MUSIC + "=1")
.append(" AND " + MediaColumns.TITLE + " != ''");
long artist_id = getArguments().getLong(BaseColumns._ID);
where.append(" AND " + AudioColumns.ARTIST_ID + "=" + artist_id);
mWhere = where.toString();
mSortOrder = MediaColumns.TITLE;
mUri = Audio.Media.EXTERNAL_CONTENT_URI;
mFragmentGroupId = 88;
mType = TYPE_ARTIST;
mTitleColumn = MediaColumns.TITLE;
}
/**
* Get the file path from the Media Content Uri for video, audio or images.
*
* @param mediaContentUri Media content Uri.
**/
public static String getPathForMediaUri(Context context, Uri mediaContentUri) {
Cursor cur = null;
String path = null;
try {
String[] projection = {MediaColumns.DATA};
cur = context.getContentResolver().query(mediaContentUri, projection, null, null, null);
if (cur != null && cur.getCount() != 0) {
cur.moveToFirst();
path = cur.getString(cur.getColumnIndexOrThrow(MediaColumns.DATA));
}
// Log.v( TAG, "#getRealPathFromURI Path: " + path );
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cur != null && !cur.isClosed())
cur.close();
}
return path;
}
@Nullable
/**
* @deprecated Use {@link MediaUtils#createImageUri(Context)}
* Creates external content:// scheme uri to save the images at. The image saved at this
* {@link android.net.Uri} will be visible via the gallery application on the device.
*/
public static Uri createImageUri(Context ctx) throws IOException {
if (ctx == null) {
throw new NullPointerException("Context cannot be null");
}
Uri imageUri = null;
ContentValues values = new ContentValues();
values.put(MediaColumns.TITLE, "");
values.put(ImageColumns.DESCRIPTION, "");
imageUri = ctx.getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
return imageUri;
}
@Nullable
/**
* @deprecated Use {@link MediaUtils#createVideoUri(Context)}
* Creates external content:// scheme uri to save the videos at.
*/
public static Uri createVideoUri(Context ctx) throws IOException {
if (ctx == null) {
throw new NullPointerException("Context cannot be null");
}
Uri imageUri;
ContentValues values = new ContentValues();
values.put(MediaColumns.TITLE, "");
values.put(ImageColumns.DESCRIPTION, "");
imageUri = ctx.getContentResolver().insert(Video.Media.EXTERNAL_CONTENT_URI, values);
return imageUri;
}
private static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) {
Cursor cursor = null;
final String column = MediaColumns.DATA;
final String[] projection = { column };
try {
cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}
/**
* Get an Uri from an file path.
*
* @param path The file path.
* @return The Uri.
*/
public static Uri getUriFromFile(final String path) {
ContentResolver resolver = Application.getAppContext().getContentResolver();
Cursor filecursor = resolver.query(MediaStore.Files.getContentUri("external"),
new String[]{BaseColumns._ID}, MediaColumns.DATA + " = ?",
new String[]{path}, MediaColumns.DATE_ADDED + " desc");
if (filecursor == null) {
return null;
}
filecursor.moveToFirst();
if (filecursor.isAfterLast()) {
filecursor.close();
ContentValues values = new ContentValues();
values.put(MediaColumns.DATA, path);
return resolver.insert(MediaStore.Files.getContentUri("external"), values);
}
else {
int imageId = filecursor.getInt(filecursor.getColumnIndex(BaseColumns._ID));
Uri uri = MediaStore.Files.getContentUri("external").buildUpon().appendPath(
Integer.toString(imageId)).build();
filecursor.close();
return uri;
}
}
public static Uri getUriFromFile(final String path, Context context) {
ContentResolver resolver = context.getContentResolver();
Cursor filecursor = resolver.query(MediaStore.Files.getContentUri("external"),
new String[]{BaseColumns._ID}, MediaColumns.DATA + " = ?",
new String[]{path}, MediaColumns.DATE_ADDED + " desc");
filecursor.moveToFirst();
if (filecursor.isAfterLast()) {
filecursor.close();
ContentValues values = new ContentValues();
values.put(MediaColumns.DATA, path);
return resolver.insert(MediaStore.Files.getContentUri("external"), values);
} else {
int imageId = filecursor.getInt(filecursor.getColumnIndex(BaseColumns._ID));
Uri uri = MediaStore.Files.getContentUri("external").buildUpon().appendPath(
Integer.toString(imageId)).build();
filecursor.close();
return uri;
}
}
/**
* Store a picture that has just been saved to disk in the MediaStore.
*
* @param imageFile
* The File of the picture
* @return The Uri provided by the MediaStore.
*/
public static Uri storePicture(final Context ctx, final File imageFile,
String imageName) {
final ContentResolver cr = ctx.getContentResolver();
imageName = imageName.substring(imageName.lastIndexOf('/') + 1);
final ContentValues values = new ContentValues(7);
values.put(MediaColumns.TITLE, imageName);
values.put(MediaColumns.DISPLAY_NAME, imageName);
values.put(ImageColumns.DESCRIPTION, "");
values.put(ImageColumns.DATE_TAKEN, System.currentTimeMillis());
values.put(MediaColumns.MIME_TYPE, "image/jpeg");
values.put(ImageColumns.ORIENTATION, 0);
final File parentFile = imageFile.getParentFile();
final String path = parentFile.toString().toLowerCase();
final String name = parentFile.getName().toLowerCase();
values.put(Images.ImageColumns.BUCKET_ID, path.hashCode());
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, name);
values.put("_data", imageFile.toString());
final Uri uri = cr.insert(Images.Media.EXTERNAL_CONTENT_URI, values);
return uri;
}
public static String getRealPathFromURI(final Context context,
final Uri contentUri) {
// get path from uri like content://media//
final Cursor cursor = context.getContentResolver().query(contentUri,
new String[] { MediaColumns.DATA }, null, null, null);
String path = null;
if (cursor != null) {
final int column_index = cursor
.getColumnIndexOrThrow(MediaColumns.DATA);
cursor.moveToFirst();
path = cursor.getString(column_index);
} else {
path = null;
}
cursor.close();
if (path == null) {
path = contentUri.getPath();
}
return path;
}
/**
* Get the Album Id from an Audio file.
*
* @param file The audio file.
* @return The Album ID.
*/
@SuppressWarnings("resource")
public static int getAlbumIdFromAudioFile(@NonNull final File file, final Context c) {
ContentResolver resolver = c.getContentResolver();
Cursor cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {MediaStore.Audio.AlbumColumns.ALBUM_ID},
MediaStore.MediaColumns.DATA + "=?",
new String[] {file.getAbsolutePath()}, null);
if (cursor == null || !cursor.moveToFirst()) {
// Entry not available - create entry.
if (cursor != null) {
cursor.close();
cursor = null;
}
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "{MediaWrite Workaround}");
values.put(MediaStore.MediaColumns.SIZE, file.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mpeg");
values.put(MediaStore.Audio.AudioColumns.IS_MUSIC, true);
resolver.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
}
cursor = resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {MediaStore.Audio.AlbumColumns.ALBUM_ID},
MediaStore.MediaColumns.DATA + "=?",
new String[] {file.getAbsolutePath()}, null);
if (cursor == null) {
return 0;
}
if (!cursor.moveToFirst()) {
cursor.close();
return 0;
}
int albumId = cursor.getInt(0);
cursor.close();
return albumId;
}
/**
* Delete a folder.
*
* @param file The folder name.
* @return true if successful.
*/
public static boolean rmdir(@NonNull final File file, final Context c) {
if (!file.exists()) {
return true;
}
if (!file.isDirectory()) {
return false;
}
String[] fileList = file.list();
if (fileList != null && fileList.length > 0) {
// Delete only empty folder.
return false;
}
// Try the normal way
if (file.delete()) {
return true;
}
// Try with Storage Access Framework.
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)) {
DocumentFile document = getDocumentFile(file, true, true, c);
return document != null && document.delete();
}
// Try the Kitkat workaround.
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
ContentResolver resolver = c.getContentResolver();
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
// Delete the created entry, such that content provider will delete the file.
resolver.delete(MediaStore.Files.getContentUri("external"), MediaStore.MediaColumns.DATA + "=?",
new String[] {file.getAbsolutePath()});
}
return !file.exists();
}
private void generateVideoFilename(int outputFileFormat)
{
long dateTaken = System.currentTimeMillis();
String title = createName(dateTaken);
// Used when emailing.
String filename = title + convertOutputFormatToFileExt(outputFileFormat);
String mime = convertOutputFormatToMimeType(outputFileFormat);
String path = Storage.DIRECTORY + '/' + filename;
String tmpPath = path + ".tmp";
mCurrentVideoValues = new ContentValues(9);
mCurrentVideoValues.put(Video.Media.TITLE, title);
mCurrentVideoValues.put(Video.Media.DISPLAY_NAME, filename);
mCurrentVideoValues.put(Video.Media.DATE_TAKEN, dateTaken);
mCurrentVideoValues.put(MediaColumns.DATE_MODIFIED, dateTaken / 1000);
mCurrentVideoValues.put(Video.Media.MIME_TYPE, mime);
mCurrentVideoValues.put(Video.Media.DATA, path);
mCurrentVideoValues.put(Video.Media.WIDTH, mProfile.videoFrameWidth);
mCurrentVideoValues.put(Video.Media.HEIGHT, mProfile.videoFrameHeight);
mCurrentVideoValues.put(Video.Media.RESOLUTION,
Integer.toString(mProfile.videoFrameWidth) + "x" +
Integer.toString(mProfile.videoFrameHeight));
Location loc = mLocationManager.getCurrentLocation();
if (loc != null)
{
mCurrentVideoValues.put(Video.Media.LATITUDE, loc.getLatitude());
mCurrentVideoValues.put(Video.Media.LONGITUDE, loc.getLongitude());
}
mVideoFilename = tmpPath;
Log.v(TAG, "New video filename: " + mVideoFilename);
}
private static void setImageSize(ContentValues values, int width, int height)
{
// The two fields are available since ICS but got published in JB
if (ApiHelper.HAS_MEDIA_COLUMNS_WIDTH_AND_HEIGHT)
{
values.put(MediaColumns.WIDTH, width);
values.put(MediaColumns.HEIGHT, height);
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private static void updateWidthAndHeightProjection() {
if (ApiHelper.HAS_MEDIA_COLUMNS_WIDTH_AND_HEIGHT) {
PROJECTION[INDEX_WIDTH] = MediaColumns.WIDTH;
PROJECTION[INDEX_HEIGHT] = MediaColumns.HEIGHT;
}
}
/**
* Share Image with an app installed in the system
*
* @param imagePath
* @status TODO
*/
@PhonkMethod
public void shareImage(String imagePath) {
ContentValues values = new ContentValues();
values.put(MediaColumns.MIME_TYPE, "image/png");
//values.put(MediaColumns.DATA, AppRunnerSettings.get().project.getStoragePath() + "/" + imagePath);
Uri uri = getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/png");
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
getContext().startActivity(shareIntent);
}
public static String getImagePath(Uri uri, Activity context) {
String[] projection = {MediaColumns.DATA};
Cursor cursor = context.getContentResolver().query(uri, projection,
null, null, null);
if (cursor != null) {
cursor.moveToFirst();
int columIndex = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
String ImagePath = cursor.getString(columIndex);
cursor.close();
return ImagePath;
}
return uri.toString();
}
private static String getPathFromUri(Context context, Uri imageUri) {
String filePath = "";
if (imageUri.toString().startsWith("content://com.android.gallery3d.provider")) {
imageUri = Uri.parse(imageUri.toString().replace("com.android.gallery3d", "com.google.android.gallery3d"));
}
Cursor cursor = null;
try {
String column = MediaColumns.DATA;
String[] proj = {MediaColumns.DATA};
cursor = context.getContentResolver().query(imageUri, proj, null, null, null);
cursor.moveToFirst();
if (imageUri.toString().startsWith("content://com.google.android.gallery3d")) {
filePath = imageUri.toString();
} else {
filePath = cursor.getString(cursor.getColumnIndexOrThrow(column));
}
} catch (Exception ignore) {
// Google Drive content provider throws an exception that we ignore
// content://com.google.android.apps.docs.storage
} finally {
Helper.closeQuietly(cursor);
}
if (isNullOrEmpty(filePath) || !new File(filePath).exists() ||
imageUri.toString().startsWith("content://com.google.android.gallery3d")) {
filePath = imageUri.toString();
}
return filePath;
}