Не получить файлы в каталоге папки даже после получения разрешения и файлы в папке в android - PullRequest
0 голосов
/ 09 июля 2020

Я не получаю каталог файлов даже после получения разрешения в android. Я поместил

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

в файл манифеста. и я добавил

Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED.

Всплывающее окно разрешений и разрешение в app. все же я получаю ** dir как существует, но количество файлов равно нулю **.

Вот мой полный код.

public class MainActivity extends AppCompatActivity {
    private Handler handler = new Handler();
    ArrayList<Object> filesList = new ArrayList<>();
    public static final int GALLERY_PERMISSION_CODE = 1002;
    private File[] files;
    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.i("Omm","GalleryPermission before");
        GalleryPermission();
        Log.i("Omm","GalleryPermission after");
        StringBuilder sb = new StringBuilder();
        sb.append(Environment.getExternalStorageDirectory());
        sb.append(File.separator);
        sb.append("WhatsApp/Media/.Statuses");
        Log.i("Omm"," STATUS_DIR before");

        File STATUS_DIR = new File(sb.toString());
        Log.i("Omm"," STATUS_DIR after "+ sb.toString() );
        Log.i("Omm", "dir exists = "+STATUS_DIR.exists());
        
        /****CALLING FUNCTION************/
        getData();
        /****CALLING FUNCTION************/

    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    private void GalleryPermission() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED
                    && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
                String[] galleryPermissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
                requestPermissions(galleryPermissions, GALLERY_PERMISSION_CODE);
            } else {
            }
        } else {
        }
    }
    
    private ArrayList<Object> getData() {

        StringBuilder sb = new StringBuilder();
        sb.append(Environment.getExternalStorageDirectory());
        sb.append(File.separator);
        sb.append("WhatsApp/Media/Images");//Consider this folder exits and 
                                           //contains data.
        Log.i("Omm", "ArrayList inovked");
        StoryModel f;



        String targetPath = sb.toString();
        File targetDirector = new File(targetPath);
        files = targetDirector.listFiles();

        /**************I AM GETTING FILESLENGTH AS ZERO*****BUT I HAVE FILE IN THAT DIRECTORY**************/
        Log.i("Omm", "Files = "+files.length);
        /**************I AM GETTING FILESLENGTH AS ZERO*****BUT I HAVE FILE IN THAT DIRECTORY**************/
        if (files == null) {
            Log.i("Omm", "Null");
        }
        try {
            for (int i = 0; i < files.length; i++) {
                File file = files[i];
                f = new StoryModel();
                f.setName("NBM Story Saver: " + (i + 1));
                f.setUri(Uri.fromFile(file));
                f.setPath(files[i].getAbsolutePath());
                f.setFilename(file.getName());
                filesList.add(f);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        /**************I AM GETTING FILESLIST AS ZERO*****BUT I HAVE FILE IN THAT DIRECTORY**************/
        Log.i("Omm", "dir exists = "+filesList.size());
        /**************I AM GETTING FILESLIST AS ZERO*****BUT I HAVE FILE IN THAT DIRECTORY**************/
        return filesList;
    }

}

1 Ответ

2 голосов
/ 11 июля 2020

Я только что добавил android:requestLegacyExternalStorage="true" в AndroidMainfest. xml в тег <application>.

Он работает нормально.

...