我正在尝试在我的应用中实现新的权限模型。在这里,我要求获得INTERNET许可但收到此错误我应该怎么做???
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.INTERNET},
MY_PERMISSIONS_REQUEST_INTERNET);
但Android Studio表示无法解析符号MY_PERMISSIONS_REQUEST_INTERNET 。我没有在任何地方宣布这一点,也不知道该怎么做。任何人都可以帮忙??
答案 0 :(得分:0)
MY_PERMISSIONS_REQUEST_INTERNET是一个应用定义的int常量(因此,您需要在应用中的某个位置定义此常量,可能在您的活动中。回调方法获取请求的结果。
要使这项工作,您还需要覆盖:
public void onRequestPermissionsResult(int requestCode, 字符串权限[],int [] grantResults)
在这种方法中,您将需要上面定义的常量
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_INTERNETS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
答案 1 :(得分:0)
来自文件:
* @param activity The target activity.
* @param permissions The requested permissions.
* @param requestCode Application specific request code to match with a result
* reported to {@link OnRequestPermissionsResultCallback#onRequestPermissionsResult(
* int, String[], int[])}.
*
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.INTERNET},
MY_PERMISSIONS_REQUEST_INTERNET);
您是设置(MY_PERMISSIONS_REQUEST_INTERNET)值的人,比较它并在onRequestPermissionsResult(...)函数中执行特定操作。
确保实现OnRequestPermissionsResultCallback并覆盖其函数onRequestPermissionsResult(...),如果它与MY_PERMISSIONS_REQUEST_INTERNET匹配,则检查所请求的代码,如果您将请求不同的权限,并且基于授予每个权限,您将执行特定操作,这将非常有用在您的应用中,如果拒绝用户的许可,您将通知用户特定的消息。