Android snackbar返回结果时如何处理?

Android snackbar返回结果时如何处理?,android,android-snackbar,Android,Android Snackbar,安卓工作室3.6 在我的活动中,我有snackbar: val snackbar = Snackbar.make( findViewById(android.R.id.content), getString(R.string.user_denied_permission_permanently_info), Snackbar.LENGTH_LONG

安卓工作室3.6

在我的活动中,我有snackbar:

 val snackbar = Snackbar.make(
                    findViewById(android.R.id.content),
                    getString(R.string.user_denied_permission_permanently_info),
                    Snackbar.LENGTH_LONG
                ).setAction(getString(R.string.setttings)) {
                    startActivity(
                        Intent(
                            android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
                            Uri.parse("package:" + BuildConfig.APPLICATION_ID)
                        )
                    )
                }
                val snackbarView = snackbar.view
                val textView =
                    snackbarView.findViewById<View>(com.google.android.material.R.id.snackbar_text) as TextView
                textView.maxLines = 5  //Or as much as you need
                snackbar.show()
正如您在snackbar上单击设置后看到的,然后显示我的应用程序的设置。 我在我的应用程序上输入权限,更改它,然后按“后退”按钮2次,返回我的活动。结果是我的活动电话恢复了 但我需要得到变更许可的结果。如果权限被更改,我需要进行一些特定的工作

我怎么能理解权限被更改了

您需要使用onRequestPermissionsResult方法来获取授予或拒绝的权限状态:

在您的问题中,您没有提到任何权限,因此我将使用WRITE_EXTERNAL_STORAGE,例如:

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
        } else
            Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
    }
onRequestPermissionsResult方法让您知道用户是否授予或拒绝了该权限

恢复方法:

@Override
    protected void onResume() {
        super.onResume();
        if(!checkPermission())
            Toast.makeText(this, "No action", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
    }
检查权限是否已授予,以便您可以显示Snackbar或不显示:

 private boolean checkPermission() {
        int result = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
        return result == PackageManager.PERMISSION_GRANTED;
    }