java - Dexter android 库无法正常工作
问题描述
我正在制作一个音乐播放器项目。这是我的java代码。但这段代码不起作用。当我运行这个应用程序时,该应用程序不会请求许可。它直接显示吐司Permission given
。这没有显示音乐列表。
我的java文件
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;
}
}
我还添加<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
了我的 android 清单文件。
我也在implementation 'com.karumi:dexter:4.2.0'
我的构建中添加了。.gradle 文件。
我尝试了很多网站上的很多东西。但不幸的是,我找不到任何有用的东西。
解决方案
推荐阅读
- ios - 异常的 APNS 离线行为
- design-patterns - java中数据聚合服务的代码重构
- javascript - 我如何从所选选项中获取多个值并使用换行符放入文本区域
- angular - Angular 9 和 GTM 通过 angular-google-tag-manager
- kubernetes-helm - 是否可以在图表中嵌入多个默认 values.yaml 文件?
- javascript - 反应:组件上的图像有问题
- javascript - Nginx,Node JS(multer)的文件上传错误
- django - 从 Django 在 heroku 上部署的问题
- powershell - 当我将 PowerShell 脚本保存到 .ps1 文件时,PowerShell NewMsolUser cmdlet ParameterBindingException 错误
- c++ - GDB 不断下载调试信息