Android 6许可访问互联网 [英] Android 6 Permission access to internet
问题描述
一个月前,我写了我的第一个应用程序,我放了写SD卡的权限,当活动开始时,我请求权限:
month ago I wrote my first app and I put permission to write on sd-card, when activity start i request permission i do:
if (permission != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("L'app richiede i permessi di scrittura")
.setTitle("Richiesta Permessi");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
makeRequest();
}
});
AlertDialog dialog = builder.create();
dialog.show();
} else {
makeRequest();
}
}
这是makeRequest()
private static final int REQUEST_WRITE_STORAGE = 112;
private static String TAG = "PermissionDemo";
protected void makeRequest() {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_STORAGE);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_WRITE_STORAGE: {
if (grantResults.length == 0
|| grantResults[0] !=
PackageManager.PERMISSION_GRANTED) {
//Log.i(TAG, "Permission has been denied by user");
finish();
} else {
//Log.i(TAG, "Permission has been granted by user");
creaConfigurazioneIniziale();
}
return;
}
}
}
现在我的应用需要互联网许可,我已将其放在清单中:
Now my app have need permission for internet i have put this on manifest:
<uses-permission android:name="android.permission.INTERNET" />
和这个
但是不起作用,我该怎么做才能添加Internet和网络权限?
我尝试添加makereqeust
这个:
but don't work, what i can do to add permission for Internet and network?
I have try to add makereqeust
this:
protected void makeRequest() {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_STORAGE);
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.INTERNET},
REQUEST_WRITE_STORAGE);
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_NETWORK_STATE},
REQUEST_WRITE_STORAGE);
}
但不起作用.我该如何解决问题?
but don't work. How i can do to solve problem?
推荐答案
您不需要请求Internet或access_network_state权限,因为Android默认情况下会授予它.
You don't need to ask for internet or access_network_state permission because Android grant it by default.
我们需要检查一些危险的权限
there are some dangerous permissions which we have to check
日历: READ_CALENDAR,WRITE_CALENDAR
CALENDAR : READ_CALENDAR, WRITE_CALENDAR
相机:相机
联系人: READ_CONTACTS,WRITE_CONTACTS,GET_ACCOUNTS
CONTACTS : READ_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTS
位置::ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION
LOCATION : ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION
麦克风: RECORD_AUDIO
MICROPHONE : RECORD_AUDIO
电话::READ_PHONE_STATE,CALL_PHONE,READ_CALL_LOG,WRITE_CALL_LOG,ADD_VOICEMAIL,USE_SIP,PROCESS_OUTGOING_CALLS
PHONE : READ_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOICEMAIL, USE_SIP, PROCESS_OUTGOING_CALLS
传感器: BODY_SENSORS
SENSORS : BODY_SENSORS
短信::SEND_SMS,RECEIVE_SMS,READ_SMS,RECEIVE_WAP_PUSH,RECEIVE_MMS
SMS : SEND_SMS, RECEIVE_SMS, READ_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS
存储: READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE
STORAGE : READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE
普通权限列表
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_NETWORK_STATE
ACCESS_NETWORK_STATE
ACCESS_NOTIFICATION_POLICY
ACCESS_NOTIFICATION_POLICY
ACCESS_WIFI_STATE
ACCESS_WIFI_STATE
蓝牙
BLUETOOTH_ADMIN
BLUETOOTH_ADMIN
BROADCAST_STICKY
BROADCAST_STICKY
CHANGE_NETWORK_STATE
CHANGE_NETWORK_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_STATE
CHANGE_WIFI_STATE
DISABLE_KEYGUARD
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
EXPAND_STATUS_BAR
闪光灯
GET_PACKAGE_SIZE
GET_PACKAGE_SIZE
互联网
KILL_BACKGROUND_PROCESSES
KILL_BACKGROUND_PROCESSES
MODIFY_AUDIO_SETTINGS
MODIFY_AUDIO_SETTINGS
NFC
READ_SYNC_SETTINGS
READ_SYNC_SETTINGS
READ_SYNC_STATS
READ_SYNC_STATS
RECEIVE_BOOT_COMPLETED
RECEIVE_BOOT_COMPLETED
REORDER_TASKS
REORDER_TASKS
REQUEST_INSTALL_PACKAGES
REQUEST_INSTALL_PACKAGES
SET_TIME_ZONE
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER
SET_WALLPAPER_HINTS
SET_WALLPAPER_HINTS
TRANSMIT_IR
TRANSMIT_IR
USE_FINGERPRINT
USE_FINGERPRINT
振动
WAKE_LOCK
WAKE_LOCK
WRITE_SYNC_SETTINGS
WRITE_SYNC_SETTINGS
SET_ALARM
SET_ALARM
INSTALL_SHORTCUT
INSTALL_SHORTCUT
UNINSTALL_SHORTCUT
UNINSTALL_SHORTCUT
有关更多信息,请查看此内容. 正常和危险权限
For more information check this out. Normal and Dangerous Permissions
我正在按照自己的方式发布代码.假设我们要检查CAMARA
权限.
I am posting code the way i did. Let's say we what to check for CAMARA
permission.
public class Utility {
public static final int MY_PERMISSIONS_REQUEST_CAMERA = 130;
public static boolean checkPermissionCAMERA(final Context context) {
int currentAPIVersion = Build.VERSION.SDK_INT;
if (currentAPIVersion >= android.os.Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(context,
Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context,
Manifest.permission.CAMERA)) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle("Permission necessary");
alertBuilder.setMessage("Camera permission is necessary");
alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions((Activity) context,
new String[] { Manifest.permission.CAMERA }, MY_PERMISSIONS_REQUEST_CAMERA);
}
});
AlertDialog alert = alertBuilder.create();
alert.show();
} else {
ActivityCompat.requestPermissions((Activity) context, new String[] { Manifest.permission.CAMERA },
MY_PERMISSIONS_REQUEST_CAMERA);
}
return false;
} else {
return true;
}
} else {
return true;
}
}
public static void showDialogOK(final Activity context, String message) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle("Permission necessary");
alertBuilder.setMessage(message);
alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Utility.checkAndRequestPermissions(context);
}
});
AlertDialog alert = alertBuilder.create();
alert.show();
}
}
现在进入活动".
if(Utility.checkPermissionCAMERA(this)){
// Do work
}
并最终覆盖onRequestPermissionsResult
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
switch (requestCode) {
case Utility.MY_PERMISSIONS_REQUEST_CAMERA:
if (ContextCompat.checkSelfPermission(Splash_Activity.this,
Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
// do work
}else{
// take action
}
break;
}
}
如何检查多个权限?
How to Check for multiple permissions?
public class Utility {
public static final int REQUEST_ID_MULTIPLE_PERMISSIONS = 101;
public static boolean checkAndRequestPermissions(final Activity context) {
int ExtstorePermission = ContextCompat.checkSelfPermission(context,
Manifest.permission.READ_EXTERNAL_STORAGE);
int WExtstorePermission = ContextCompat.checkSelfPermission(context,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
int cameraPermission = ContextCompat.checkSelfPermission(context,
Manifest.permission.CAMERA);
int READ_PHONE_STATE = ContextCompat.checkSelfPermission(context,
Manifest.permission.READ_PHONE_STATE);
int location = ContextCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION);
int READ_CONTACTS = ContextCompat.checkSelfPermission(context,
Manifest.permission.READ_CONTACTS);
int RECORD_AUDIO = ContextCompat.checkSelfPermission(context,
Manifest.permission.RECORD_AUDIO);
int internet = ContextCompat.checkSelfPermission(context,
Manifest.permission.INTERNET);
List<String> listPermissionsNeeded = new ArrayList<>();
if (cameraPermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.CAMERA);
}
if (WExtstorePermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded
.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (ExtstorePermission != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded
.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
if (location != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (READ_PHONE_STATE != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
}
if (READ_CONTACTS != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_CONTACTS);
}
if (RECORD_AUDIO != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.RECORD_AUDIO);
}
if (internet != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.INTERNET);
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(context, listPermissionsNeeded
.toArray(new String[listPermissionsNeeded.size()]),
REQUEST_ID_MULTIPLE_PERMISSIONS);
return false;
}
return true;
}
public static void showDialogOK(final Activity context, String message) {
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
alertBuilder.setCancelable(true);
alertBuilder.setTitle("Permission necessary");
alertBuilder.setMessage(message);
alertBuilder.setPositiveButton(android.R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Utility.checkAndRequestPermissions(context);
}
});
AlertDialog alert = alertBuilder.create();
alert.show();
}
}
我希望这会有所帮助
这篇关于Android 6许可访问互联网的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!