Android snackbar返回结果时如何处理?
安卓工作室3.6 在我的活动中,我有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
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;
}