Я создаю приложение, похожее на галерею, где у меня есть возможность перемещать изображение в целевой каталог. Изображение перемещается, а исходное изображение удаляется, но новая папка не отображается в моем приложении. В моей галерее по умолчанию папка приложения видна с фотографиями, которые я переместил.
public void moveToFav(String filePath){
boolean renameBoolean = false;
File from = new File(filePath);
String revName = new StringBuilder(filePath).reverse().toString();
String array2[]= revName.split("/", 2);
String realName = new StringBuilder(array2[0]).reverse().toString();
File to = new File(Function.FAV_PATH+"/"+realName);
if (from.renameTo(to)){
getContentResolver().delete(MediaStore.Files.getContentUri("external"),
MediaStore.MediaColumns.DATA + "=?", new String[]{filePath});
LoadAlbum loadAlbum = new LoadAlbum(FullScreenImageActivity.this);
loadAlbum.execute();
}else{
Toast.makeText(FullScreenImageActivity.this,"Please retry after sometime..",Toast.LENGTH_LONG).show();
}
}
Это моя AsyncTask, куда я загружаю все изображения:
package com.apps.sumukha.galleri.AsyncTasks;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.MergeCursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.provider.MediaStore;
import com.apps.sumukha.galleri.Activities.SplashScreen;
import com.apps.sumukha.galleri.MainActivity;
import com.apps.sumukha.galleri.Utils.Function;
import com.apps.sumukha.galleri.Utils.MapComparator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
/**
* Created by sumukha on 4/4/18.
*/
public class LoadAlbum extends AsyncTask<String, Void, String> {
ArrayList<HashMap<String, String>> albumList = new ArrayList<HashMap<String, String>>();
Context context;
public LoadAlbum(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
albumList.clear();
System.out.println("*****###### cAME to async");
}
protected String doInBackground(String... args) {
String xml = "";
String path = null;
String album = null;
String timestamp = null;
String countPhoto = null;
Uri uriExternal = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
Uri uriInternal = android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI;
String[] projection = { MediaStore.MediaColumns.DATA,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.MediaColumns.DATE_MODIFIED };
Cursor cursorExternal = context.getContentResolver().query(uriExternal, projection, "_data IS NOT NULL) GROUP BY (bucket_display_name",
null, null);
Cursor cursorInternal = context.getContentResolver().query(uriInternal, projection, "_data IS NOT NULL) GROUP BY (bucket_display_name",
null, null);
Cursor cursor = new MergeCursor(new Cursor[]{cursorExternal,cursorInternal});
while (cursor.moveToNext()) {
path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA));
album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME));
timestamp = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATE_MODIFIED));
countPhoto = Function.getCount(context, album);
albumList.add(Function.mappingInbox(album, path, timestamp, Function.converToTime(timestamp), countPhoto));
}
cursor.close();
Collections.sort(albumList, new MapComparator(Function.KEY_TIMESTAMP, "dsc")); // Arranging photo album by timestamp decending
return xml;
}
@Override
protected void onPostExecute(String xml) {
System.out.println("****#### post report "+albumList.toString());
Intent intent = new Intent(context,MainActivity.class);
intent.putExtra("albumlist",albumList);
context.startActivity(intent);
// AlbumAdapter adapter = new AlbumAdapter(MainActivity.this, albumList);
// galleryGridView.setAdapter(adapter);
// galleryGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
// public void onItemClick(AdapterView<?> parent, View view,
// final int position, long id) {
// Intent intent = new Intent(MainActivity.this, AlbumActivity.class);
// intent.putExtra("name", albumList.get(+position).get(Function.KEY_ALBUM));
// startActivity(intent);
// }
// });
}
}
Непонятно, что вы перечисляете. Вы не разместили код.
Какой код вы хотите увидеть? У меня есть значок панели параметров, при нажатии на который вызывается выше написанная функция. Передается путь к файлу изображения.
Можете ли вы объяснить, что ваше приложение перемещает файл в папку, а затем не знает, как отобразить этот файл в этой папке?
Извините за задержку ответа. Пожалуйста, найдите всю кодовую базу здесь:
github.com/SumukhaK/Android_WorkSamples
Если вы хотите что-то сказать или объяснить, пожалуйста, сделайте это. Я не пойду по этой ссылке.
в приведенной выше функции я перемещаю изображение из одного файла в другой. Он движется. Но новая папка (скажем, X) не отображается в моем приложении. Это моя проблема.
Вам нужно будет отправить уведомление в Media Scanner. ты делаешь это?
Отличается от того, что уже присутствует в методе, который я разместил? (В методе movtoFav после оператора if я информирую контент-провайдера об удалении).