zoukankan      html  css  js  c++  java
  • 6.0新特性 权限管理方式

    http://www.jianshu.com/p/e1ab1a179fbb

     

     而在Android 6.0 Marshmallow中,用户在安装应用时并不需要受到这些提示的骚扰,只有在首次打开、使用过程中实际用到哪些权限才会向收到申请授权的提醒。这一点和现在的iOS非常相像

    package com.example.myapplication22;
    
    import android.Manifest;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.pm.PackageManager;
    import android.support.v4.app.ActivityCompat;
    import android.support.v4.content.ContextCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            insertDummyContactWrapper();
    
        }
    
    
        final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;
    
        private void insertDummyContactWrapper() {
            List<String> permissionsNeeded = new ArrayList<String>();
    
            final List<String> permissionsList = new ArrayList<String>();
            if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
                permissionsNeeded.add("GPS");
            if (!addPermission(permissionsList, Manifest.permission.READ_CONTACTS))
                permissionsNeeded.add("Read Contacts");
            if (!addPermission(permissionsList, Manifest.permission.WRITE_CONTACTS))
                permissionsNeeded.add("Write Contacts");
    
            if (permissionsList.size() > 0) {
                if (permissionsNeeded.size() > 0) {
                    // Need Rationale
                    String message = "You need to grant access to " + permissionsNeeded.get(0);
                    for (int i = 1; i < permissionsNeeded.size(); i++)
                        message = message + ", " + permissionsNeeded.get(i);
                    showMessageOKCancel(message,
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    ActivityCompat.requestPermissions(MainActivity.this, permissionsList.toArray(new String[permissionsList.size()]),
                                            REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                                }
                            });
                    return;
                }
                ActivityCompat.requestPermissions(MainActivity.this,permissionsList.toArray(new String[permissionsList.size()]),
                        REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                return;
            }
    
            Toast.makeText(this, "qwerrtrt", Toast.LENGTH_SHORT).show();
        }
    
        private boolean addPermission(List<String> permissionsList, String permission) {
            if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
                permissionsList.add(permission);
                // Check for Rationale Option
                if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,permission))
                    return false;
            }
            return true;
        }
    
    
    
    
        private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
            new AlertDialog.Builder(MainActivity.this)
                    .setMessage(message)
                    .setPositiveButton("OK", okListener)
                    .setNegativeButton("Cancel", null)
                    .create()
                    .show();
        }
    
    
    
    
    }
    View Code
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myapplication22" >
    
    
        <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
        <uses-permission android:name="android.permission.READ_CONTACTS"/>
        <uses-permission android:name="android.permission.CAMERA"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme" >
            <activity android:name=".MainActivity" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
  • 相关阅读:
    SpingMVC ModelAndView, Model,Control以及参数传递
    ModelAndView详解
    HibernateTemplate的一些常用方法总结
    选中的文本向左向右移动快捷键
    学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法
    springMVC框架中,在hib-config.xml配置sqlserver2008数据库连接的代码
    amaze UI 笔记
    amaze UI 笔记
    jQuery 属性(十二)
    jQuery 核心函数 (十一)
  • 原文地址:https://www.cnblogs.com/bimingcong/p/5103487.html
Copyright © 2011-2022 走看看