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.