gpt4 book ai didi

android - 永远不会在 FragmentActivity 中调用 onRequestPermissionsResult()

转载 作者:太空狗 更新时间:2023-10-29 13:12:04 24 4
gpt4 key购买 nike

我正在尝试实现运行时权限,但是当 FragmentActivity 接收到 onRequestPermissionResult() 时几乎没有问题。 checkPermissions() 方法工作得很好,但是 onRequestPermissionResult() 永远不会在用户允许或拒绝权限后调用。

当显示系统对话框以请求权限时,永远不会调用 MyActivity.onDestroy()。与这个问题有关吗?

我已经尝试关注 this oneanother one ,但我想我错过了什么。

我的设备是 Nexus 5X (Android 6.0),Target SDK 版本是 23。最低支持 SDK 版本为 15。当然,我在 AndroidManifest.xml 中写了所需的权限,并在 build.gradle 中添加了 v23 支持库。

这是我的代码:

public class MyActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkPermissions();
}

private void checkPermissions(){
String[] dangerousPermissions = {
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.GET_ACCOUNTS,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
};

for(String permission : dangerousPermissions){
if (!hasPermission(permission)) {
Log.e("permission.debug", "need to grant " + permission);
ActivityCompat.requestPermissions(this, dangerousPermissions, 4);
}
}
}

public boolean hasPermission(String permission){
return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED;
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

Log.d("permission.debug", " request code " + requestCode);
for (int i = 0; i < permissions.length; i++) {
if (grantResults[i] == 0 && Manifest.permission.READ_PHONE_STATE.equals(permissions[i])) {
initiate();
}
}
}
}

这是我的代码的日志:

E/permission.debug: need to grant android.permission.READ_PHONE_STATE
E/permission.debug: need to grant android.permission.GET_ACCOUNTS
E/permission.debug: need to grant android.permission.WRITE_EXTERNAL_STORAGE
E/permission.debug: need to grant android.permission.RECORD_AUDIO

谢谢。

最佳答案

尝试直接调用 requestPermissions 而不是 ActivityCompat.requestPermissions。如下图

if (checkNeededPermissions.size() > 0) {
Log.d(TAG, "Checking permissions");
requestPermissions(this, dangerousPermissions, 4);
}

编辑

我没有看到您在哪里定义了列表 checkNeededPermissions。能否请你像上面那样在里面放一个日志

关于android - 永远不会在 FragmentActivity 中调用 onRequestPermissionsResult(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com