赞
踩
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
2020年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在Manifest
文件中声明需要申请的权限
判断当前的版本是否符合(大于等于Android 6.0
)
判断权限是否已经被授权
已授权,不再操作权限
未授权,进行权限申请
用户操作后,提示权限是否开启成功
如果对于这类危险权限的申请,没有在
Manifest
中声明,那么就会默认不授权,并不会弹窗给用户选择。
<!-- 在外部存储设备中写入和修改数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
public class MainActivity extends AppCompatActivity { private static final int REQUEST_CODE = 1; private static String[] PERMISSIONS_STORAGE = {"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //android版本在6.0以上 if (Build.VERSION.SDK_INT >= 23) { System.out.println("版本正确"); checkPermission(); }else { System.out.println("版本过低"); } } private void checkPermission() { //权限是否已经赋予 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //未赋予权限,申请权限 if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission .WRITE_EXTERNAL_STORAGE)) { //选择不开启权限的时候,提示用户 Toast.makeText(this, "请开通相关权限,否则无法正常使用本应用!", Toast.LENGTH_SHORT).show(); } //申请权限 ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_CODE); } else { //权限已赋予 Toast.makeText(this, "已授权成功!", Toast.LENGTH_SHORT).show(); } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { //权限的申请结果返回 case REQUEST_CODE: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //已授权 Toast.makeText(this, "授权成功!", Toast.LENGTH_SHORT).show(); } else { //未授权 Toast.makeText(this, "授权被拒绝!", Toast.LENGTH_SHORT).show(); } } } } }
RxPermissions
可以简化获取权限的操作,而且内部也自动帮我们判断了版本是否需要申请权限。同时结合RxJava
回调结果。
使用
RxPermissions
框架的最小SDK
版本要大于等于14。
allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.tbruyelle:rxpermissions:0.10.2' implementation 'io.reactivex.rxjava2:rxjava:2.0.1' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' }
危险权限的申请需要在Manifest
文件中声明。
<!--相机-->
<uses-permission android:name="android.permission.CAMERA" />
//初始化RxPermissions框架 RxPermissions permissions = new RxPermissions(this); //申请权限 permissions.request(Manifest.permission.CAMERA) .subscribe(new Consumer<Boolean>() { //RxJava的观察者模式 @Override public void accept(Boolean aBoolean) { if (aBoolean ) { //接受 Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show(); }else { //拒绝 Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show(); } } });
//初始化RxPermissions框架 RxPermissions permissions = new RxPermissions(this); //申请权限 permissions.request(Manifest.permission.CAMERA,Manifest.permission.WRITE_CALL_LOG) .subscribe(new Consumer<Boolean>() { //RxJava的观察者模式 @Override public void accept(Boolean aBoolean) { if (aBoolean ) { //接受 Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show(); }else { //拒绝 Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show(); } } });
最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2020-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。
还有 高级架构技术进阶脑图、高级进阶架构资料 帮助大家学习提升进阶,这里我也免费分享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
一起互勉~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
[外链图片转存中…(img-vCR1owBi-1715012545191)]
[外链图片转存中…(img-SXQTcbqJ-1715012545191)]
一起互勉~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。