这是我的讲师给出的示例代码。我理解整个事情,除了有一个叫做“setRequestPermisssionsResult”的函数的部分。我没有看到它在代码中的任何地方调用,我想知道它是否有用。
该计划运行完美。
}
public void EnableRuntimePermission() {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.INTERNET}, REQUEST_CODE);
}
public void setRequestPermisssionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE:
if (grantResults.length > 0 && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(MainActivity.this, "Internet permission granted.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "Internet permission not granted.", Toast.LENGTH_LONG).show();
}
break;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EnableRuntimePermission();
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.INTERNET)== PackageManager.PERMISSION_GRANTED){
Toast.makeText(getApplicationContext(),"Internet Permission Granted", Toast.LENGTH_LONG).show();
FetchData fetchData=new FetchData();
fetchData.execute("a18b978603316d47c572d98d52a420f6");
}
如果根本没有调用该方法,则意味着它没有被使用。
无论如何,现在有两种方式在Android中请求权限。一个来自Android Manifest(不直接询问用户)和编程方式来自Java / Kotlin代码。这些是“更重要的”。在这种情况下,用户将看到用于访问手机上的内容的对话框,可能是相机硬件或其他东西,并且他有权允许或拒绝。你的教授刚刚通过一种方法将所有权限存储在那里,这意味着他重构了在整个应用程序中请求权限的方式。
这是documentation的许可