[英]Method onRequestPermissionsResult not called in no app module
我在没有“应用程序”模块的活动中应该使用 WRITE_EXTERNAL_STORAGE 权限。 此模块中未调用方法 onRequestPermissionsResult。 我的代码启动此运行时权限
private fun requestPermissions() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
viewModel?.initTree()
} else {
val storagePermission = Manifest.permission.WRITE_EXTERNAL_STORAGE
val hasPermission = checkSelfPermission(storagePermission)
val permissions = arrayOf(storagePermission)
if (hasPermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(permissions, PERMISSION_WRITE_EXTERNAL_STORAGE_REQUEST_CODE)
} else {
viewModel?.initTree()
}
}
}
和 onRequestPermissionsResult
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
if (requestCode == PERMISSION_WRITE_EXTERNAL_STORAGE_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
viewModel?.initTree()
} else {
Toast.makeText(this, R.string.permission_required, Toast.LENGTH_SHORT).show()
}
}
}
我尝试使用方法 ActivityCompat.requestPermissions() 并添加调用 super.onRequestPermissionsResult() 但它对我没有帮助。 然后我尝试将我的代码添加到应用程序模块中的活动中,它可以正常工作。
我的麻烦是什么原因?
UPD:没有“应用程序”模块中的 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.anthony_kharin.file_manager">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application android:requestLegacyExternalStorage="true">
<activity
android:name=".view.FileExplorerActivity"
android:theme="@style/Theme.FileManagerLibrary" />
</application>
尝试使用dexter 库跟踪源代码
Dexter.withContext(this)
.withPermission(Manifest.permission.CAMERA)
.withListener(new PermissionListener() {
@Override public void onPermissionGranted(PermissionGrantedResponse response) {/* ... */}
@Override public void onPermissionDenied(PermissionDeniedResponse response) {/* ... */}
@Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {/* ... */}
}).check();
问题是由于复杂的逻辑,我在onResume之前关闭了活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.