帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:ann  BASE  annotation  permission  Runtime  API  
Provides simple annotation-based API to handle runtime permissions in Android M.

  • 源代码名称:PermissionsDispatcher
  • 源代码网址:http://www.github.com/permissions-dispatcher/PermissionsDispatcher
  • PermissionsDispatcher源代码文档
  • PermissionsDispatcher源代码下载
  • Git URL:
    git://www.github.com/permissions-dispatcher/PermissionsDispatcher.git
  • Git Clone代码到本地:
    git clone http://www.github.com/permissions-dispatcher/PermissionsDispatcher
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/permissions-dispatcher/PermissionsDispatcher
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • PermissionsDispatcher Build Status

    image

    PermissionsDispatcher提供了一个基于API的简单注释来处理运行时权限。

    为了让你的代码保持清洁和安全,本库提取了一系列检查语句的负担。

    用法

    下面是一个最小的例子,在这个例子中,你需要一个需要 Manifest.permission.CAMERA

    0.准备 AndroidManifest

    将以下行添加到 AndroidManifest.xml:

    <uses-permission android:name="android.permission.CAMERA"/>

    1附加注释

    PermissionsDispatcher只介绍了一些注释,使它的通用API简洁:

    注:注释的方法不能是 private

    注释要求的说明
    @RuntimePermissionsregister 用于处理权限的Activity 或者 Fragment ( 我们都支持)
    @NeedsPermission注释执行需要一个或者多个权限的操作的方法
    @OnShowRationale注释一个方法,该方法解释了为什么需要/s的权限。 它传入一个 PermissionRequest 对象,可以在用户输入时继续或者中止当前权限请求
    @OnPermissionDenied如果用户不授予权限,则注释调用的方法
    @OnNeverAskAgain注释如果用户选择具有有关权限的设备"从不询问",则调用该方法
    @RuntimePermissionspublicclassMainActivityextendsAppCompatActivity {
     @NeedsPermission(Manifest.permission.CAMERA)
     voidshowCamera() {
     getSupportFragmentManager().beginTransaction()
    . replace(R.id.sample_content_fragment, CameraPreviewFragment.newInstance())
    . addToBackStack("camera")
    . commitAllowingStateLoss();
     }
     @OnShowRationale(Manifest.permission.CAMERA)
     voidshowRationaleForCamera(finalPermissionRequestrequest) {
     newAlertDialog.Builder(this)
    . setMessage(R.string.permission_camera_rationale)
    . setPositiveButton(R.string.button_allow, (dialog, button) -> request.proceed())
    . setNegativeButton(R.string.button_deny, (dialog, button) -> request.cancel())
    . show();
     }
     @OnPermissionDenied(Manifest.permission.CAMERA)
     voidshowDeniedForCamera() {
     Toast.makeText(this, R.string.permission_camera_denied, Toast.LENGTH_SHORT).show();
     }
     @OnNeverAskAgain(Manifest.permission.CAMERA)
     voidshowNeverAskForCamera() {
     Toast.makeText(this, R.string.permission_camera_neverask, Toast.LENGTH_SHORT).show();
     }
    }

    2生成的类

    编译时,PermissionsDispatcher生成 MainActivityPermissionsDispatcher ( [Activity Name] + PermissionsDispatcher ) 类,你可以使用它安全地访问这些权限受保护的方法。

    你必须执行的唯一步骤是将工作委托给这里 helper 类:

    @Overrideprotectedvoid onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     findViewById(R.id.button_camera).setOnClickListener(v -> {
     // NOTE: delegate the permission handling to generated methodMainActivityPermissionsDispatcher.showCameraWithPermissionCheck(this);
     });
    }@Overridepublicvoid onRequestPermissionsResult(int requestCode, @NonNullString[] permissions, @NonNullint[] grantResults) {
     super.onRequestPermissionsResult(requestCode, permissions, grantResults);
     // NOTE: delegate the permission handling to generated methodMainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
    }

    查看示例插件以获得更详细的信息。

    其他功能

    已知问题

    如果你遇到问题,请在文件出现问题之前检查已知的问题列表。

    用户

    幸运的是,我们有数百个用户在全球

    下载

    要向项目中添加 PermissionsDispatcher,请在你的应用程序模块build.gradle file: 中包含以下内容

    ${latest.version}Download

    dependencies {
     compile("com.github.hotchemi:permissionsdispatcher:${latest.version}") {
     // if you don't use android.app.Fragment you can exclude support for them exclude module: "support-v13" }
     annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:${latest.version}"}

    开发版本的快照在的jfrog存储库快照中可用。 添加下面的repo 以下载 SNAPSHOT 版本。

    repositories {
     jcenter()
     maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
    }

    许可证

    Copyright 2016 Shintaro Katafuchi, Marcel Schnelle, Yoshinori Isogai
    Licensed under the Apache License, Version 2.0 (the"License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an"AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.


    文章标签:API  BASE  ann  Runtime  annotation  permission  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语