我在onReceiver里面需要获取权限,请问该怎么写?
public void onReceive(Context context, Intent intent) {
         String[] StrPermission={Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,
                Manifest.permission.READ_LOGS,
                Manifest.permission.INSTALL_PACKAGES,
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.INTERNET};
        for (String x:StrPermission) {
            int result2=ActivityCompat.checkSelfPermission(context, x);
            if (result2 == PackageManager.PERMISSION_GRANTED)
            {
                Log.i(Constants.TAG,"有权限");
            }
            else {
                Log.i(Constants.TAG,"無权限,開始獲取");
               ActivityCompat.requestPermissions((Activity)context, new String[]{x}, 1);  //这里的第一个参数需要activity要怎么写?原来是在activity里面写的demo
            }
            result2=ActivityCompat.checkSelfPermission(context, x);
            Log.i(Constants.TAG,"执行完"+x+"权限为--》"+result2);
        }
     }

解决方案 »

  1.   

    你这个BroadCastReceive是谁创建的?
      

  2.   

    系统创建的,我是改的源码,rk3288平台android7.1
      

  3.   

    启动一个空白的Activity再操作。
      

  4.   


    谢谢指点,已经实现!
    参考:https://blog.csdn.net/cqx13763055264/article/details/80037162
      

  5.   

    空白Activity会影响top位置Activity生命周期,
    如果是正在播放视频,则会中断,你确认此情况可以接受?
      

  6.   

    我只是需要activity获取对象权限进行后台上传操作,代码逻辑如下,请问有何建议:onReceive(Context context, Intent intent) {
        
       if(action.equals(WP_TAG))
          {Intent intActivity=new Intent(context,LogActivity.class);
                  intActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//must set this way!!
                  context.startActivity(intActivity);}
    }
    activity:                     //1.获取权限
                         //2. catch log
                        //3.新开线程传log到sftp服务器