`
wang_peng1
  • 浏览: 3944294 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

new Android's Runtime Permission

 
阅读更多

 targetSdkVersion 23 开始 使用运行时权限,就像iphone谈框,不能简单的和以前一样 在配置文件写明权限,需要用代码判断。所以为了防止此问题发生 请不要设置targetSdkVersion 23,应该比他小,不然需要代码判断。

目前不属于运行时权限的有

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_NOTIFICATION_POLICY
android.permission.ACCESS_WIFI_STATE
android.permission.ACCESS_WIMAX_STATE
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.CHANGE_NETWORK_STATE
android.permission.CHANGE_WIFI_MULTICAST_STATE
android.permission.CHANGE_WIFI_STATE
android.permission.CHANGE_WIMAX_STATE
android.permission.DISABLE_KEYGUARD
android.permission.EXPAND_STATUS_BAR
android.permission.FLASHLIGHT
android.permission.GET_ACCOUNTS
android.permission.GET_PACKAGE_SIZE
android.permission.INTERNET
android.permission.KILL_BACKGROUND_PROCESSES
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.NFC
android.permission.READ_SYNC_SETTINGS
android.permission.READ_SYNC_STATS
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.REORDER_TASKS
android.permission.REQUEST_INSTALL_PACKAGES
android.permission.SET_TIME_ZONE
android.permission.SET_WALLPAPER
android.permission.SET_WALLPAPER_HINTS
android.permission.SUBSCRIBED_FEEDS_READ
android.permission.TRANSMIT_IR
android.permission.USE_FINGERPRINT
android.permission.VIBRATE
android.permission.WAKE_LOCK
android.permission.WRITE_SYNC_SETTINGS
com.android.alarm.permission.SET_ALARM
com.android.launcher.permission.INSTALL_SHORTCUT
com.android.launcher.permission.UNINSTALL_SHORTCUT

 其他的则代码检测

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) {
                            requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                                    REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
                        }
                    });
            return;
        }
        requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
                REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
        return;
    }
 
    insertDummyContact();
}
 
private boolean addPermission(List<String> permissionsList, String permission) {
    if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
        permissionsList.add(permission);
        // Check for Rationale Option
        if (!shouldShowRequestPermissionRationale(permission))
            return false;
    }
    return true;
}

 

分享到:
评论

相关推荐

    Android代码-Android M的Runtime Permission助手

    Speed up your work with new Runtime Permissions introduced in Android 6.0 Marshmallow. This lib allows you to monitor permissions, check them in background and as well ask for a permission in easy way...

    Arcgis runtime for Android.docx

    &lt;uses-permission android:name="android.permission.INTERNET" /&gt; &lt;uses-feature android:glEsVersion="0x00020000" android:required="true" /&gt; ... 这两行代码的作用是申请互联网权限和 OpenGL ES 2.0 权限...

    cocoscreator嵌入原生Android1

    在 Android 项目中添加 libcocos2dx 依赖模板,首先需要在 `File` 菜单中选择 `New` &gt; `Import Module`,然后选择 CocosCreator 项目中的 `cocos2d-x\cocos\platform\android\java` 目录下的 `libcocos2dx` 模板。...

    Android代码-基于注解调用简单的AP来处理新的Android运行权限模型

    Annotation based simple API flavoured with AOP to handle new Android runtime permission model. If you check Google's Samples about the new permission model, you'll see a lot of boiler plate code for ...

    Android程序中(APK程序)执行Adb shell 命令

    在AndroidManifest.xml文件中,我们可能需要添加一些权限,比如`&lt;uses-permission android:name="android.permission.RUN_EXTERNAL_COMMANDS" /&gt;`,尽管这个权限在API 23及以上版本已被废弃,但仍然可以用来说明你的...

    android关机重启功能实现

    在AndroidManifest.xml文件中,你需要声明`android.permission.REBOOT`和`android.permission.SHUTDOWN`权限,但需要注意的是,这两个权限是签名级别的,意味着只有系统应用或者获得了系统签名的应用才能获取到这些...

    代码获取android开机启动时间,已经开机启动应用

    然而,从Android 8.0(API级别26)开始,系统会限制后台服务的启动,因此可能需要在`AndroidManifest.xml`中为服务声明`android:permission="android.permission.START_FOREGROUND"`,并实现前台服务。 总的来说,...

    android代码控制关机重启

    &lt;uses-permission android:name="android.permission.REBOOT" /&gt; &lt;uses-permission android:name="android.permission.SHUTDOWN" /&gt; ``` 这两个权限分别用于重启和关机操作。请注意,这些权限属于危险权限,意味着...

    android系统中调用shell脚本

    4. **使用`dalvikvm-heap`权限**:在AndroidManifest.xml中添加`&lt;uses-permission android:name="android.permission.DUMP" /&gt;`,这允许应用获取设备状态信息,可能有助于执行更复杂的shell命令。 5. **使用AIDL...

    android定时静默安装apk

    &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; &lt;uses-permission android:name="android.permission.INSTALL_PACKAGES" /&gt; ``` 注意:`ACCESS_SUPERUSER` 是对root权限的请求,而...

    android 给app授权 执行shell命令

    在`AndroidManifest.xml`文件中,添加`&lt;uses-permission&gt;`标签,例如`&lt;uses-permission android:name="android.permission.ACCESS_SUPERUSER" /&gt;`。请注意,这不是标准的Android权限,而是特定于Root环境的。 3. **...

    基于Android的APP前端数据交互.pdf

    提供了标准的Java接口HttpURLConnection,通过url.openConnection()方法获取,因 为要访问网络,所以在android stdio项目的清单文件Android Manifest.xml中添加访问网络的权限:&lt;uses-permission android:name=”...

    ArcGIS for android 访问天地图

    &lt;uses-permission android:name="android.permission.INTERNET" /&gt; ``` 2. 异常处理:对可能出现的异常进行捕获并处理,如网络错误、解析错误等。 3. 日志调试:利用Android的Log类输出关键步骤的日志,便于定位...

    Android 获取OTG U盘路径 sdcard路径

    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); } ``` 2. **获取外部存储路径**:一旦获取权限,可以使用`Environment`类提供的方法来获取内置SD卡...

    Android各个主要手机机型跳转权限设置界面代码

    首先,Android权限分为运行时权限(Runtime Permissions)和安装时权限(Install-Time Permissions)。运行时权限是在应用运行过程中,当需要使用特定敏感权限时,系统会弹出请求用户授权的对话框。安装时权限则是在...

    Android高级笔记

    &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt; &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /&gt; ``` **步骤3:创建请求队列** ```java ...

    Android6.0动态权限demo

    在Android系统的发展历程中,Android 6.0(Marshmallow)引入了一项重大改变,即运行时权限(Runtime Permissions)管理机制。在此之前,应用程序在安装时会一次性获取所有所需权限,而在Android 6.0及以上版本,...

    Android 动态权限获取

    在Android系统中,从6.0(API级别23)开始,引入了一种新的权限管理模型,即“运行时权限”(Runtime Permissions)。这个模型改变了以往在安装应用时一次性授予所有权限的方式,使得用户可以在应用运行过程中根据...

    android定时关机,重启

    首先,Android应用程序通常使用Java或Kotlin编写,而执行系统命令则需要借助`Runtime`类或者`ProcessBuilder`类。这两个类可以让我们在应用中执行shell命令,从而实现对设备的操作。 1. **使用Runtime类执行命令** ...

    android 动态申请权限封装

    在Android系统中,自API 23( Marshmallow 版本)开始,引入了权限管理的新模型——运行时权限(Runtime Permissions)。与之前的版本不同,现在应用在安装后并不是自动获取所有权限,而是需要在运行时根据需要向...

Global site tag (gtag.js) - Google Analytics