与以往的版本相比,Android 6.0 有哪些亮点
①锁屏下语音搜索:
成都创新互联公司长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为巴州企业提供专业的成都网站设计、网站制作,巴州网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
用户可以直接在锁屏状态下进行语音搜索,虽然现在的一些安卓手机支持语音唤醒功能,但这些语音唤醒都是第三方厂商开发的,而此次的Android 6.0在系统层面加入锁屏下语音搜索,这无疑会在体验上有一个明显的提升。
②指纹识别:
Android 6.0则在系统层面加入指纹识别,能提供原生指纹识别API,这不但降低了厂商开发指纹识别模块的成本,最重要的是原生指纹识别将会大大提升安卓手机的指纹识别支付安全性。
③更完整的应用权限管理:
在此前的原生安卓系统中有应用通知管理功能,但更为深入的应用权限管理只能靠第三方应用实现。Android 6.0进一步强化应用权限管理,应用权限管理也成为系统级的功能,不过这对于那些权限管理软件来说并不是什么好消息。
④Doze电量管理
Android 6.0自带Doze电量管理功能,在“Doze”模式下,手机会在一段时间未检测到移动时,让应用休眠清杀后台进程减少功耗,谷歌表示,当屏幕处于关闭状态,平均续航时间提高30%。
⑤Now on Tap功能
Now on Tap功能是和Google搜索紧密结合的功能,它可以让谷歌从任何应用中进行搜索。例如,在微信中聊天的时候提到餐馆,那么就可以在不跳转的情况下进行谷歌搜索。
扩展资料:
一款“为工作升级而生”的Android系统。
Android M最大的一个亮点是:为用户提供两套相互独立的解决方案。
简单来说,Android M将为每位用户的每一个应用都提供两套数据存储方案。一套专门用来储存用户的工作资料,另一套专门用来存储用户的个人信息。并且,让这两套系统完全相互独立。
Google I/O 2015大会已于5月28日在旧金山举行。
“智能解锁”功能,里面不仅有之前提到的面部解锁功能,还支持在连接到信任的Wifi下或在信任的地点自动解锁设备,还有很智能化的“贴身检测”的功能,通过系统自动检测手机是不是被拿在手上或者放到了随身携带的包包里,从而自动解锁或者锁定设备。
“屏幕固定”功能,这个功能开启后,多任务预览界面里,支持固定的应用右下角会出现一个图钉,点击后就可以将手机界面锁定在这个应用里,无法返回主屏幕,无法下拉通知栏,只有长按多任务预览按钮进入锁屏界面,输入解锁密码才能退出应用的锁定。
参考资料:Android 6.0_百度百科
聊聊Android6.0 以上系统权限
一个新建的Android应用默认是没有权限的,这意味着它不能执行任何可能对用户体验有不利影响的操作或者访问设备数据。为了使用受保护的功能,你必须包含一个或者多个标签在你的app manifest中。
1、Android 6.0中权限分为两种,普通权限和危险权限(即运行时权限,下面统称运行时权限)。
1.1普通权限
如果你的应用manifest中只申明了普通权限(也就是说,这些权限对于用户隐私和设备操作不会造成太多危险),系统会自动授予这些权限。
1.2运行时权限
如果你的应用manifest中声明了运行时权限(也就是说,这些权限可能会影响用户隐私和设备的普通操作),系统会明确的让用户决定是否授予这些权限。系统请求用户授予这些权限的方式是由当前应用运行的系统版本来决定的。
1.2.1 Android6.0及以上的系统
如果你的设备运行的是Android6.0(API level 23)及以上的系统,并且你的应用的targetSdkVersion也是23或者更高,那么应用向用户请求这些权限是实时的。这意味着用户可以随时取消 这些运行时权限的授权。所以应用在每次需要用到这些运行时权限的时候都需要去检查是否还有这些权限的授权。
1.2.2 Android 5.1及以下的系统
如果你的设备运行在Android5.1(API level 22)及以下的系统中,或者你的app的targetSdkVersion是22或者更低。系统会请求用户在apk安装的时候授予这些权限。
如果你的应用更新的时候添加了一个权限,系统会在用户更新应用的时候请求用户授予这个权限 , 一旦用户安装了这个应用,唯一可以取消授权的方式就是卸载掉这个应用。 注意这句话的意思,想一下如果app的targetSdkVersion是22或者以下,但是运行在Android6.0及以上的设备中会有什么问题?后面会分析这个问题 。
常常来说一个授权失败会抛出SecurityException,然而这并不是在 所有情况下都会发生。比如,发送一个广播去检查授权(SendBroadcast(Intent)),数据会被发送给所有接收者,但是当这个方法的请求返 回的时候,你不会收到任何一个因为授权失败抛出的异常,其实在大多数情况下,授权失败只会打印系统日志。
1.3自动权限调整
简单的说,如果你的app targetSdkVersion是3,而你当前运行的系统版本是4,那么在android version 4 中新添加的权限会自动添加到你的app中。
比如 WRITE_EXTERNAL_STORAGE权限是在api 4的时候添加的,而你的应用的targetSdkVersion是3,那么这个权限会自动添加到你的应用中。而且在官方商店上这个权限也会列出来(尽管可能你并不需要这个权限)。
所以建议经常更新你的targetSdkVersion到最新版本。
下面来回答上面的那个问题,如果app的targetSdkVersion是22或者以下,但是运行在android 6.0或以上版本的手机中,会发生什么?
安装过程中,会一起请求用户授予所有 权限,如果用户拒绝,将不能安装这个app,只有用户全部同意这些授权,才能安装这个应用,但是问题来了,安装好了这个应用之后,android6.0以 上的系统中,用户是可以去设置中取消授权的,而且是随时都可以取消,所以很多运行时权限可能也得不到,目前官方的做法是,如果用户取消该项授权,那么依赖 该项授权的方法的返回值为null,所以你的app可能会报空指针异常。以后是否会针对22以下的app做改变还不得而知,毕竟crash是很难让人接受 的,但是crash是由用户造成的,用户应该也可以理解。
2、普通权限和运行时权限
系统权限会被传递给两种不同的保护级别,我们所知道这两种最重要的保护级别就是普通权限和运行时权限。
2.1 普通权限
普通权限的覆盖区域是在你的app需要访问沙盒以外的数据和资源的时候,但是对用户隐私和其他app的操作只有很少的影响,比如开启手电筒的权限。这个时候,系统会自动授权这些普通权限。
Normal Permissions:
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_NETWORK_STATE
ACCESS_NOTIFICATION_POLICY
ACCESS_WIFI_STATE
BLUETOOTH
BLUETOOTH_ADMIN
BROADCAST_STICKY
CHANGE_NETWORK_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_STATE
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
GET_PACKAGE_SIZE
INSTALL_SHORTCUT
INTERNET
KILL_BACKGROUND_PROCESSES
MODIFY_AUDIO_SETTINGS
NFC
READ_SYNC_SETTINGS
READ_SYNC_STATS
RECEIVE_BOOT_COMPLETED
REORDER_TASKS
REQUEST_INSTALL_PACKAGES
SET_ALARM
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER_HINTS
TRANSMIT_IR
UNINSTALL_SHORTCUT
USE_FINGERPRINT
VIBRATE
WAKE_LOCK
WRITE_SYNC_SETTINGS
2.2 运行时权限
运行时权限的覆盖区域是你的app想要的数据和资源涉及用户的隐私信息,或者是可能潜在的影响用户的存储数据或者其他app的操作。比如,请求获取用户联系人信息的权限。如果一个app申明了运行时权限,用户必须明确的授权这些权限给app。
2.3 权限组
所有的运行时权限都属于对应的权限组,如果你的app运行在android6.0及以上系统,下面的规则都适用:
2.3.1 如果一个app在manifest中请求了一个运行时权限,而且app还没有得到这个运行时权限所在的权限组中的任何一个运行时权限授权,那么系统会弹出一个对话框,描述app想要访问的运行时权限的权限组,这个对话框不会描述这个权限组中某一个特定的权限。比如,你的app想要请求READ_CONTACT权限,对话框只会描述app想要请求设备的联系人,如果用户授权通过,系统会授予app所请求的该项权限。
2.3.2 如果一个app在manifest中请求一个运行时权限,并且这个app已经在相同的权限组中有了另一个运行时权限的授权,那么系统不会弹出对话框,而是会立即授予app该项运行时权限的授权。比如,一个app之前请求过一个READ_CONTACT的权限并且被授权通过,之后又请求一个WRITE_CONTACT(在同一个权限组)权限,那么系统会自动授予该权限。
其实所有权限(普通权限、运行时权限、用户自定义权限)都属于特定的权限组,但是只有运行时权限的权限组才会影响用户体验。
2.3.3运行时权限组和权限组列表
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS
可以通过adb shell pm list permissions -d -g进行查看。
看到上面的dangerous permissions,会发现一个问题,好像危险权限都是一组一组的,恩,没错,的确是这样的,那么有个问题:分组对我们的权限机制有什么影响吗?的确是有影响的,如果app运行在Android 6.x的机器上,对于授权机制是这样的。如果你申请某个危险的权限,假设你的app早已被用户授权了 同一组 的某个危险权限,那么系统会立即授权,而不需要用户去点击授权。比如你的app对READ_CONTACTS已经授权了,当你的app申请WRITE_CONTACTS时,系统会直接授权通过。此外,对于申请时弹出的dialog上面的文本说明也是对整个权限组的说明,而不是单个权限(ps:这个dialog是不能进行定制的)。不过需要注意的是,不要对权限组过多的依赖,尽可能对每个危险权限都进行正常流程的申请,因为在后期的版本中这个权限组可能会产生变化。
3、相关API
3.1 在AndroidManifest文件中添加需要的权限。
这个步骤和我们之前的开发并没有什么变化,试图去申请一个没有声明的权限可能会导致程序崩溃。
3.2 检查权限
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
}else{
//
}
这里涉及到一个API,ContextCompat.checkSelfPermission,主要用于检测某个权限是否已经被授予,方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。当返回DENIED就需要进行申请授权了
3.3 申请授权
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
该方法是异步的,第一个参数是Context;第二个参数是需要申请的权限的字符串数组;第三个参数为requestCode,主要用于回调的时候检测。可以从方法名requestPermissions以及第二个参数看出,是支持一次性申请多个权限的,系统会通过对话框 逐一 询问用户是否授权。
3.4 处理权限申请回调
@Override
publicvoidonRequestPermissionsResult(intrequestCode,
String permissions[],int[] grantResults) {
switch(requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if(grantResults.length 0 grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the contacts-related task you need to do.
}else{
// permission denied, boo! Disable the functionality that depends on this permission.
}
return;
}
}
}
ok,对于权限的申请结果,首先验证requestCode定位到你的申请,然后验证grantResults对应于申请的结果,这里的数组对应于申请时的第二个权限字符串数组。如果你同时申请两个权限,那么grantResults的length就为2,分别记录你两个权限的申请结果。如果申请成功,就可以做你的事情了!
那么将上述几个步骤结合到一起就是:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
谢幕,至此有关于android6.0 以上权限相关的内容已经详细讲完了!
安卓6.0版本算低的吗
不算。安卓6.0虽然是2015秋发布,但是各手机厂商针对此版本推出的操作系统基本都是2016年才推出,所以采用安卓6.0版本的手机操作系统并不算低。
Android 6.0 策略路由
实现648 Android 6.0端与410 Linux端通过Switch通信
1. 虚拟网卡配置
648中延用638中方法在有线网络接口eth0上创建虚拟网卡eth0.1并设置ip 10.66.1.3用以与410地址10.66.1.2通信。
配置结果可通过命令“ifconfig”查看:
并且配置完成后,系统路由表中会自动多出一条路由:
2. Android M 多网络共存
经过步骤一的配置之后在638 Android 4.4系统上即可与410建立通信;但在648 Android 6.0上是不通的。此问题查询了很长时间终于有了解决方案,且听我细细道来。
Android4.4只使用了一张路由表,使用busybox route就可以完成路由表的设置,从Android5.0之后,考虑要对多网络的支持,采用了多路由表。Android 5.0(LOLLIPOP)以上,在同一时间下,Android系统可以允许多网络类型连接,而且并不是简单的网络共存,而是每个网络有一套自己的dns,网关,路由表。比如eth0,wlan0分别有自己独立的一套。应用层在建立socket连接的时候,可以自由选择使用那套网络;在这样子的前提下,你就可以选择究竟采用那种网络来完成你的请求。这里还涉及到另一个新的概念不同网络的标识netid,应用层可通过绑定指定的netid来设置该应用走指定的网络,但此处暂不赘述有兴趣可自己了解。在Android 5.0(LOLLIPOP)之前,在同一时间下,Android系统只能允许一种网络类型连接。之后在多网络的情况下,系统是如何选择的呢?这就需要引入一个关键名词“策略路由”。
策略路由在linux中已经存在很久,但是Android5.0开始才真正将其作用发挥出来。策略路由区别于一般的路由就在于,一般的路由是以目的地址作为识别与区分的标识,例如下面这个路由表,它表示所有目的地址为192.168.7.0/24的数据包都直接从eth0发出
当面对比较复杂的情况时,这种基于目的地址的路由,就很受局限。例如:有两个网卡eth0, eth1,希望所有http上网数据从eth0出去,FTP数据从eth1出去。这种情况就必须要策略路由才能处理。
策略路由的基本命令:
648上策略路由信息:
各部分解释
整行的意思就是,如果一个数据包符合规则(源地址、目的地址、协议、端口、数据包大小、内容等),则使用指定路由表。
系统最多支持255个路由表:
在默认情况下进行路由时,首先会根据规则0在本地路由表里寻找路由,如果目的地址是本网络,或是广播地址的话,在这里就可以找到合适的路由;从这个路由规则中可以看到, 路由表 local优先,然后是netid 对应 0x10064 的走 eth0 路由表,对应 0x10066 走 eth0 路由表。而通常情况下访问网络时没有设置 netid,默认就使用 22000: from all fwmark 0x0/0xffff lookup eth0 这个,即 eth0 路由表。
有了策略路由,就可以保证当多网卡存在是,每个网卡有自己的路由表,为多网卡共存提供路由基础。上层应用,可以选择要经过的路由。
此处没有走eth0.1到10.66.1.2的路由策略,需添加:
3. Linux 路由与策略路由
Linux是在内核2.1开始采用策略性路由机制的。策略性路由机制与传统的路由算法相比主要是引入了上面的多路由表以及规则的概念。
要配置一个策略路由有2步:
1、在自定义路由表中添加要走的路由 ip route add xxx table table_num
2、增加策略,使得符合该策略的流量走第一步所定义的路由表 ip rule add 策略 【table tablenum 或 动作】。
传统的linux路由是由一张路由表去保存网络链路上的路由信息的。新的linux策略路由的理念是使用多张路由表去保存路由信息。何为策略路由呢,就是为不用的数据包制定不同的路由策略,即在IP路选时走不同的路由。
在策略路由机制中,可以支持多张路由表,最多可支持255张表。其中4张是内置路由表,如下:
策略路由的作用
1 基于源地址选路( Source-Sensitive Routing)
2 根据服务级别选路( Quality of Service)
3 节省费用的应用
4 负载平衡(Load Sharing)
什么是android 6.0系统
Google I/O 2015大会如约已于2015年5月28日举行。在发布会上代号为“Marshmallow(棉花糖)”的安卓6.0系统正式推出。
Android 6.0新特性
编辑
锁屏下语音搜索[1]
用户可以直接在锁屏状态下进行语音搜索,虽然现在的一些安卓手机支持语音唤醒功能,但这些语音唤醒都是第三方厂商开发的,而此次的Android 6.0在系统层面加入锁屏下语音搜索,这无疑会在体验上有一个明显的提升。
指纹识别
说到指纹识别,很多用户都会觉得现在的中高端安卓手机都支持,但事实上这
些安卓手机的指纹识别都是各个厂商自行开发的并没有系统底层的支持。Android
6.0则在系统层面加入指纹识别,能提供原生指纹识别API,这不但降低了厂商开发指纹识别模块的成本,最重要的是原生指纹识别将会大大提升安卓手机的指
纹识别支付安全性。
更完整的应用权限管理
在此前的原生安卓系统中有应用通知管理功能,但更为深入的应用权限管理只能靠第三方应用实现。Android 6.0进一步强化应用权限管理,应用权限管理也成为系统级的功能,不过这对于那些权限管理软件来说并不是什么好消息。
Doze电量管理
Android 6.0自带Doze电量管理功能,在“Doze”模式下,手机会在一段时间未检测到移动时,让应用休眠清杀后台进程减少功耗,谷歌表示,当屏幕处于关闭状态,平均续航时间提高30%。
Now on Tap功能
Now on Tap功能是和Google搜索紧密结合的功能,它可以让谷歌从任何应用中进行搜索。例如,在微信中聊天的时候提到餐馆,那么就可以在不跳转的情况下进行谷歌搜索。
App Links
通过App Links功能,Android平台能够向网络服务器提出申请,自主识别链接内容。直接跳转到App客户端中,改善用户体验,有利于让用户在体验更完善的App客户端完成更多操作。
此外,在Android 6.0谷歌还加入了Android Pay进一步强化移动支付,同时也是为了对抗Apple Pay。在发布会上谷歌表示Android 6.0将在下周开始推送,Nexus5/6/7/9以及Nexus Player将能够在第一时间得到升级
安卓6.0系统如何下载安装
知道安卓6.0系统如何下载安装的吗。那么安卓6.0系统下载安装是怎么操作的呢?下面是我收集整理的安卓6.0系统如何下载安装,希望对大家有帮助~~
安卓6.0系统下载安装的方法
工具/原料
安卓手机
安装前须知
1友情提示:这个版本的安卓系统只是预览版系统,还有很多问题需要完善,仅限推荐给已经解锁设备的开发者测试应用使用,同时也建议大家尽量使用工厂镜像包进行全新升级,否则会出现一些这样或那样的问题,影响操作体验。
之前订阅了安卓M开发者预览版的用户可以通过OTA无线升级,或者下载最新的安卓官方固件。同上次开发者固件一样,支持设备有Nexus 5、Nexus 6、Nexus 9和Nexus Player。
2据悉,安卓6.0开发者预览版3将是该系统最后一个预览版系统,下一步谷歌将为正式版系统的发布做最后准备。不过,虽然是“最后一个”开发者预览版,但Android 6.0目前的状态依然不尽完善,不过还是建议普通用户谨慎升级。android m预览版3固件下载地址:PC6下载站
3下面我还搜集整理了一个谷歌Nexus5卡刷包以及相应的刷机教程,分享给大家,希望你们会喜欢,一起来看看吧。
Nexus5卡刷包以及相应的刷机教程
4Nexus5卡刷包及安卓6.0刷机教程
END
方法/步骤一、关于Nexus5安卓6.0卡刷包的说明
1一、关于Nexus5安卓6.0卡刷包的说明卡刷包基于谷歌官方发布的Android 6.0 Marshmallow(棉花糖)系统的第三个开发者预览版固件制作,包括官方内核以及系统应用。安装后请在无线网络下自行更新系统自带应用,获得更好的使用体验。请确认你的Nexus5 bootloader版本大于HHZ12h,Radio版本大于M8974A-2.0.50.2.26,如果你的手机已经运行在安卓5.0及以上版本的系统,那么你就不用考虑以上这些了。如果谷歌推送新的bootloader和Radio,发生兼容性问题请使用工厂镜像重新进行刷机。
END
方法/步骤二、刷机前准备工作以及相关注意事项
1① 首先下载卡刷包,通过数据线导入你的手机根目录中。下载后的文件为RAR格式,请大家下载后先进行解压,将.zip后缀的卡刷包放入手机根目录,同时尽量避免使用中文命名卡刷包,避免接下来的操作无法识别;谷歌Nexus5安卓6.0/Android M系统卡刷包下载地址:PC6下载站(522.4MB,RAR格式,解压后的zip文件校验信息如下)MD5:72DE5477BEE240A718842EF09845AB9DSHA1:BA7F88312E0800B44E4C678394E2BD5EF1BA924BCRC32:081D0A2A
2② 请确认备份过你安装的软件应用,使用卡刷包刷机会清空你安装过的应用,但是不会影响到你存储的数据,比如拍的照片和保存的视频;
3③ 确认你的手机电量高于60%;
4④ 你需要拥有一个恢复模式,用来刷入卡刷包,恢复模式仅限用于解锁过的设备,这里推荐使用TWRP(下载Nexus5 TWRP)。
END
方法/步骤三、Nexus5卡刷安卓6.0固件包详细步骤
① 成功安装TWRP后,手机关机后长按“音量 -”和“电源键”启动,在Bootloader界面通过音量键上下选择“Recovery(恢复模式)”,点击电源键确认进入;
② 在TWRP界面中依次选择“Wipe (清除选项)——Advanced Wipe(高级清除选项)——勾选System(清除系统数据)、Data(清除应用数据)、Cache(清除缓存)以及Dalvik-cache(清除虚拟机缓存)“,最后向右滑动底部的箭头按钮即可。这里千万不要勾选Internal Storage(内部存储)否则会清空手机保存的数据!
③ 在“Install(选择压缩包)”中选择放在系统根目录里的卡刷包,滑动下方确认条,耐心等待刷机完成;
④ 刷完后选择“Reboot System(重启系统)”如果恢复模式提示你刷入SuperSU,请选择“Do Not Install(不要安装)”;
网站标题:android系统6.0,Android系统登录网络中国移动
网站链接:http://scyingshan.cn/article/dsdgiop.html