我正在开发一个Android应用程序,我必须允许用户使用相机扫描QR码。
在每个Android版本中(除外
我阅读了开发android网站的文档,但我不理解一些事情:
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
} else {
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}
}
守则第二部分:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// 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
}
}
如何使此代码适应我的问题?
什么是“MY_PERMISSIONS_REQUEST_READ_CONTACTS”?
试试这个简单的代码,在运行时询问用户权限。
步骤1:声明此变量
private int STORAGE_PERMISSION_CODE=23
步骤2:将此代码粘贴到onCreate()函数中,一旦调用活动,就会生成一个对话框,要求您授予“读取外部存储”的访问权限。
ActivityCompat.requestPermissions(this,new String[{Manifest.permission.READ_EXTERNAL_STORAGE},STORAGE_PERMISSION_CODE]);
您可以根据需要更改“READ_EXTERNAL_STORAGE”参数。
有关“Android Marshmallow权限”的完整演示,请查看此链接:https://www.simplifiedcoding.net/android-marshmallow-permissions-example/
RxPersion是现在广泛使用的库。如果编写所有代码以获取权限,它会变得很复杂。
RxPermissions rxPermissions = new RxPermissions(this); // where this is an Activity instance // Must be done during an initialization phase like onCreate
rxPermissions
.request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if (granted) { // Always true pre-M
// I can control the camera now
} else {
// Oups permission denied
}
});
你的build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tbruyelle:rxpermissions:0.10.1'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
}
这不是很容易吗?
MY_PERMISSIONS_REQUEST_READ_CONTACTS是一个静态int变量,您需要在活动中设置它。它是onRequest estPermissionsResult
中使用的请求代码。它是必需的,以便您知道在onRequest estPermissionsResult
中对哪个权限采取了行动(是接受还是拒绝)。
在你的活动的顶部只需把私有静态最终intMY_PERMISSIONS_REQUEST_READ_CONTACTS=1;
(数字可以是任何你想要的)
问题内容: 在清单文件中,我添加了粗略的权限,当我在装有Android 6的设备上运行时,什么也没发生!我尝试了所有方法,但无法获取位置更新… 我究竟做错了什么? 问题答案: 实际上需要在运行时请求“位置”权限(请注意代码中的说明)。 这是经过测试的有效代码,用于请求“位置”权限。 确保导入: 然后将此代码放在Activity中: 然后在中调用方法: 然后,您可以使用和完全按照问题中的说明进行操作
首先,我知道这是一个重复的问题,但我已经看过了其他类似问题的答案,没有找到成功的解决方案。 我已经开发了一款应用程序,可以在我的测试设备上完美运行,这是一款运行Android L(5.0.1)的三星S4。不过,我希望这款应用程序也能在较新版本的Android上运行。 我知道Android M的请求权限已更改,因此必须在运行时请求权限,但当我尝试实现此功能时,对话框从未出现,因此从未请求所需的权限。
问题内容: 我正在测试我的应用,即使清单中已经定义了,它也会被强制关闭。我在某处已经读到,如果我在运行时请求权限,则不会强制关闭您的应用程序。我也已经阅读了这个android文档,用于请求运行时权限。 因此,我知道我们可以请求一个如下所示的权限,该权限在android文档中有所提及。 上面的代码具有获取结果的回调方法。 我的问题是要向用户确切请求权限?我们应该在应用启动时使用请求权限还是应该在需要
我做错了什么?
我需要从tarantool中选择所有数据,从一个空间中选择两个值。如何像mysql一样执行对tarantool的请求? 现在我可以提出两个要求: 但我不知道如何将结果合并成一个;(
我已在清单文件中添加了所有权限。在Lollipop中,所有应用程序都会在安装应用程序期间询问权限,但当应用程序安装在Marshmallow中时,权限不是询问。 清单权限是