android studio在manifest.xml里申请了权限,但是打开APP并没有立即获取

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tcpclient">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

初次打开大约两三分钟后才弹出获取权限的提示

在限制的android版本里面manifest.xml里面不叫申请权限,叫声明权限。权限需要动态申请。当你安装或者上架第三方的时候,会有个权限清单,清单里面就是读取了你的XML,然后知道你声明了你会用到哪些权限。具体的权限,需要你在APP里面用提醒的方式,你说两三分钟后才出现,那说明你程序刚好运行到了动态申请权限的地方。你想打开就立即获取,那就应该在第一个活动运行的时候,立马申请权限了。

 

申请权限是用代码写的

可以用运行时权限库 HiPermission
用的时候是这样
 

 List<PermissionItem> permissionItems = new ArrayList<PermissionItem>();
        permissionItems.add(new PermissionItem(Manifest.permission.READ_PHONE_STATE, "手机状态",
                R.drawable.permission_ic_phone));
        permissionItems.add(new PermissionItem(Manifest.permission.WRITE_EXTERNAL_STORAGE, "存储空间",
                R.drawable.permission_ic_storage));

        HiPermission.create(SplashActivity.this)
                .permissions(permissionItems)
                .filterColor(getResources().getColor(R.color.platform_main_theme))
                .animStyle(R.style.PermissionAnimScale)
                .style(R.style.PermissionDefaultNormalStyle)
                .checkMutiPermission(new PermissionCallback() {
                    @Override
                    public void onClose() {
                        //用户关闭
                        init();
                    }

                    @Override
                    public void onFinish() {
                        //所有权限申请完成
                        init();
                    }

                    @Override
                    public void onDeny(String permission, int position) {
                    }

                    @Override
                    public void onGuarantee(String permission, int position) {
                    }
                });