关于andriod网络权限的请求和权限回调

我的是andriod7版本(API 24),现在已经在AndroidManifest上添加标签:

但是据说andriod6 以上版本需要添加request permission,还有一个权限回调。

我知道GPS的权限是添加了标签以后,然后在main方法里写上:
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},123);

然后还要添加权限的回调:

if(ContextCompat.checkSelfPermission(context,Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
Toast.makeText(context,"Permission not granted",Toast.LENGTH_SHORT).show();
//return null;
}

LocationManager lm=(LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean isGPSEnabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGPSEnabled){
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,6000,10,this);//at least 6000 ms and at least move 10 m, the GPS will update
Location l=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
return l;
}else{
Toast.makeText(context,"Please enable GPS",Toast.LENGTH_LONG).show();//LONG means delay3.5 seconds

}

但是网络权限的request permission和权限回调不知道怎么写,请各位大神帮帮我。

BaseActivity中的代码:

private OnBooleanListener onPermissionListener;
/**
* 权限请求(这个方法也有坑,如果检测的时候权限是拒绝的,那就会回调false,但如果检测的时候权限是询问,然后让用户授权权限的时候选了拒绝,那么下面这个代码返回的依旧是true,所以需要搭配另外一个方法用以实时检测权限是否通过)
* @param permission Manifest.permission.CAMERA
* @param onBooleanListener 权限请求结果回调,true-通过 false-拒绝
*/
public void permissionRequests(Activity activity,String permission, OnBooleanListener onBooleanListener){
onPermissionListener=onBooleanListener;
if (ContextCompat.checkSelfPermission(activity,
permission)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(activity,
Manifest.permission.READ_CONTACTS)) {
//权限通过
onPermissionListener.onClick(true);
} else {
//没有权限,申请一下
ActivityCompat.requestPermissions(activity,
new String[]{permission},
1);
}
}else {
//权限已有
if (onPermissionListener != null) {
onPermissionListener.onClick(true);
}
}
}

/**
 * 当此权限是必要的,而用户没有允许,允许弹出自定义的设置窗口
 * @param activity
 * @param onBooleanListener
 * @param permissions
 */
public void permissionCheck(Activity activity, OnBooleanListener onBooleanListener, String ...permissions){
    onPermissionListener = onBooleanListener;
    for (String permission:permissions){
        if (ContextCompat.checkSelfPermission(activity,
                permission)!= PackageManager.PERMISSION_GRANTED) {
            //没有权限,申请一下
            onPermissionListener.onClick(false);
            break;
        } else {
            if (permission.equals(permissions[permissions.length-1])){
                onPermissionListener.onClick(true);
            }
        }
    }
}


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == 1) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //权限通过
            if(onPermissionListener!=null){
                onPermissionListener.onClick(true);
            }
        } else {
            //权限拒绝
            if(onPermissionListener!=null){
                onPermissionListener.onClick(false);
            }
        }
        return;
    }
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

Activity中的调用代码:

permissionRequests(Manifest.permission.CAMERA, new OnBooleanListener() {
@Override
public void onClick(boolean bln) {
if(bln){
ToastUtils.showToast(getContext(),"权限通过");
}else{
ToastUtils.showToast(getContext(),"权限拒绝");
}
}
});

回调接口(新建一个interface)代码:

package com.imxiaoyu.common.impl;

/**

  • 回调错误或者正确
  • Created by 她叫我小渝 on 2016/11/1. */

public interface OnBooleanListener {
void onClick(boolean bln);
}

https://blog.csdn.net/a249900679/article/details/51284911请求

https://www.sogou.com/link?url=DOb0bgH2eKh1ibpaMGjuy8XzRMpeAHZJx-6jmHfOvpZw7KPKo-CjB7lMYN4AAABvfg0sVbtDHyg.回调

在Android的开发中经常使用网络请求,下面就让我们看看在Android中如何通过回调来获取网络数据吧:首先我们需要一个执行回调的类:public class AsyClass { //模拟从服务器获取数据 public void getDataFromSever(String path,final Callback callback){ new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub String msg="通过接口调用数据"; callback.getData(msg); } }).start(); } //用于回调的接口 public interface Callback{ public void getData(String result); } }然后就是在Activity中执行网络请求了:import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;import android.view.View;import android.widget.Button; public class MainActivity extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)this.findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub AsyClass asy=new AsyClass(); //通过调用接口得到数据 asy.loadString("", new Callback() { @Override public void getData(String result) { // TODO Auto-generated method stub Log.i("TAG", "-------->"+result); } }); } }); } }
具体的回调

将一楼的对应的permission 写成网络权限就可以了

网络权限不是危险权限,不需要动态申请。只是工信部规定不允许应用后台偷跑流量,所以做整机开发的必须给用户流量使用提示。个人开发看自己的职业道德了,没有强制要求。

android6.0不是所有权限都要运行时申请,普通权限不需要运行时申请,危险权限才需要.另外权限库可用谷歌的权限库https://github.com/googlesamples/easypermissions

网络权限不属于危险权限,不需要写运行时权限申请的只需要在AndroidManifest.xml中添加就可以

楼上已经很多了 网络权限是不需要运行时申请的 你只需要在manifast 中静态添加就可以了 关于网络只需要判断网络状态就可以 也就是说 静态权限添加以后 你只需要判断有没有网络就好了

网络权限是不需要运行时申请的,只需要在AndroidManifest.xml中添加就可以