Папка, в которую я переместил свои изображения, не отображается в моем приложении галереи

avatar
Sumukha Aithal K
7 апреля 2018 в 21:51
111
0
0

Я создаю приложение, похожее на галерею, где у меня есть возможность перемещать изображение в целевой каталог. Изображение перемещается, а исходное изображение удаляется, но новая папка не отображается в моем приложении. В моей галерее по умолчанию папка приложения видна с фотографиями, которые я переместил.

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);
//                }
//            });
    }

}
Источник
greenapps
7 апреля 2018 в 22:25
0

Непонятно, что вы перечисляете. Вы не разместили код.

Sumukha Aithal K
7 апреля 2018 в 22:38
0

Какой код вы хотите увидеть? У меня есть значок панели параметров, при нажатии на который вызывается выше написанная функция. Передается путь к файлу изображения.

greenapps
7 апреля 2018 в 22:42
0

Можете ли вы объяснить, что ваше приложение перемещает файл в папку, а затем не знает, как отобразить этот файл в этой папке?

Sumukha Aithal K
8 апреля 2018 в 14:18
0

Извините за задержку ответа. Пожалуйста, найдите всю кодовую базу здесь:

Sumukha Aithal K
8 апреля 2018 в 14:19
0

github.com/SumukhaK/Android_WorkSamples

greenapps
8 апреля 2018 в 16:59
0

Если вы хотите что-то сказать или объяснить, пожалуйста, сделайте это. Я не пойду по этой ссылке.

Sumukha Aithal K
9 апреля 2018 в 02:26
0

в приведенной выше функции я перемещаю изображение из одного файла в другой. Он движется. Но новая папка (скажем, X) не отображается в моем приложении. Это моя проблема.

Rahulrr2602
9 апреля 2018 в 08:03
0

Вам нужно будет отправить уведомление в Media Scanner. ты делаешь это?

Sumukha Aithal K
9 апреля 2018 в 08:18
0

Отличается от того, что уже присутствует в методе, который я разместил? (В методе movtoFav после оператора if я информирую контент-провайдера об удалении).

Ответы (0)