And*_*orr 19 java permissions android android-6.0-marshmallow
Android Developer Documentation提供了在运行时请求权限的示例:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
Run Code Online (Sandbox Code Playgroud)
这个例子中的"MY_PERMISSIONS_REQUEST_READ_CONTACTS"是什么?它说这是一个app定义的int常量,但这是否意味着我应该创建一个Constants.java并声明一个公共的静态int?价值应该是什么?
在其他示例中,我看到人们在这里使用1,或0或0xFFEEDDCC,但我无法找到它的解释.有人可以向我解释需要去哪里以及为什么?(在我的情况下,我需要确保应用程序有权访问正常位置)
ActivityCompat文档说"应用程序特定的请求代码与报告给onRequestPermissionsResult的结果相匹配"?这对我没有帮助.
Com*_*are 21
这个例子中的"MY_PERMISSIONS_REQUEST_READ_CONTACTS"是什么?
int将特定requestPermissions()调用绑定到相应的onRequestPermissionsResult()回调是一种方法.
在封面下,requestPermissions()用途startActivityForResult(); 这int与它的作用相同startActivityForResult().
这是否意味着我应该创建一个Constants.java并声明一个公共静态int?
我只想private static final int在活动中做到这一点.但是,您可以在任何地方声明它.
价值应该是什么?
我似乎记得它需要低于0x8000000,否则它可以是你想要的任何东西.您requestPermissions()在活动中为每个调用使用的值应该是不同的int,但实际数字无关紧要.
如果您的活动只有一个requestPermissions()电话,则该int值无关紧要.但是许多应用程序会requestPermissions()在一项活动中进行多次调用.在这种情况下,开发人员可能需要知道onRequestPermissionsResult()这是什么请求.