Dexter android library is not working properly

Viewed 697

I am making a music player project. this is my java code. but this code is not working. when I run this app, the app doesn't ask for permission. it directly shows toast Permission given. and this is not showing the list of music.

my java file

package com.example.sunona;

import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.os.Bundle;
import android.os.Environment;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.karumi.dexter.Dexter;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionDeniedResponse;
import com.karumi.dexter.listener.PermissionGrantedResponse;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.single.PermissionListener;

import java.io.File;
import java.util.ArrayList;


public class MainActivity extends AppCompatActivity {

    ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.listView);

        Dexter.withActivity(this)  // change this
                .withPermission(Manifest.permission.READ_EXTERNAL_STORAGE) //change this
                .withListener(new PermissionListener() {
                    @Override
                    public void onPermissionGranted(PermissionGrantedResponse response) {
                       Toast.makeText(MainActivity.this, "Permission given", Toast.LENGTH_SHORT).show();
                       ArrayList<File> mysongs = fetchsong(Environment.getExternalStorageDirectory());
                       String [] songlist = new String[mysongs.size()];

                       for(int i=0;i<mysongs.size(); i++){songlist[i] = mysongs.get(i).getName().replace(".mp3", "");}
                        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,songlist);
                        listView.setAdapter(arrayAdapter);
                    }

                    @Override
                    public void onPermissionDenied(PermissionDeniedResponse response) {

                    }
                    @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
                        token.continuePermissionRequest();
                    }
                })
                .check();
    }

    public ArrayList<File> fetchsong(File file) {
        ArrayList arrayList = new ArrayList();
        File[] songs= file.listFiles();
        if (songs==null){
            for (File myfile :songs){
                if (!myfile.isHidden() && myfile.isDirectory()){
                    arrayList.addAll(fetchsong(myfile));
                }
                else {
                    if (myfile.getName().endsWith("mp3") && myfile.getName().startsWith(".")){
                        arrayList.add(myfile);
                    }
                }
            }
        }
        return arrayList;
    }
}

I also added <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> in my android manifest file.

i also added implementation 'com.karumi:dexter:4.2.0' in my build. gradle file.

I tried a lot of things from many websites. but unfortunately, I can't find any useful stuff.

0 Answers
Related