android - 我可以检查android布局中授予的权限吗

标签 android android-layout android-permissions

是否只有在授予特定权限的情况下才能将 View 添加到布局?

我正在使用一个名为 QRCodeReaderView 的二维码阅读器库.我在布局中使用 com.dlazaro66.qrcodereaderview.QRCodeReaderView

在 Android M 及更高版本上,如果 View 位于布局中,除非用户接受许可,否则应用程序会崩溃。

是否有可能在加载布局时我可以进行检查并决定仅在授予权限的情况下包含此 View

最佳答案

@CherryPerry 回答的一些补充:
无需创建两个不同的布局。您可以将 ViewStubQRCodeReaderView 放入您的布局中,并仅在获得许可后调用 inflate:

if (permissionGranted()) {
    qrReaderStub.inflate();
}

参见 more about ViewStub .


示例:

<!-- qr_reader.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<com.dlazaro66.qrcodereaderview.QRCodeReaderView
    android:id="@+id/qr_reader"
    android:layout_width="100dp"
    android:layout_height="100dp" />


<!-- your activity or fragment -->
<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ViewStub 
           android:id="@+id/qr_stub"
           android:layout="@layout/qr_reader"
           android:layout_width="100dp"
           android:layout_height="100dp" />

</FrameLayout>


//your activity class
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
        ViewStub.class.cast(findViewById(R.id.qr_stub)).inflate();
    }
}

关于android - 我可以检查android布局中授予的权限吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674467/

相关文章:

android - React-native:在 Android 中允许音频的权限

android - 安装期间需要危险权限

java - Java KeyStore 类中如何使用别名?

android - 动态添加 Opengl 形状

java - 将 Wear 模拟器与 Android 模拟器配对

Android 布局错误 : "Resource id <res_id> is not of type STYLE (instead attr)"

android - 为什么 Switch 在旧版 Android 上不显示?

android - 无法在 root 设备上运行程序 "su"

java - 如何将时间增加 1 小时

java - Android Studio : Showing web page that requires login in WebView