2024年Android最全React-Native之Android(6(1),2024年最新flutter跳转页面返回后图片会自动执行build

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


  • (android/app/src/AndroidMainfest.xml) targetSdkVersion 改到 23或以上 ,为什么要改????看上面

开始


  • React-Native里面有PermissionsAndroid去动态申请权限,再说一句,动态申请同意一次就可以下次调用申请它不会再提醒用户选择了,如果拒绝了,可以再次申请,且在申请钱弹一个Dialog这个是手机系统的,我们只能提供一些解释,下面用三个权限来做解释其实死是个
  • 第一步
  1. 在 android/app/src/AndroidMainfest.xml 添加
  • 第二步

//添加 PermissionsAndroid RN自带的

import { PermissionsAndroid } from ‘react-native’

  • 第三步

//给你们介绍下怎么用它的方法

//返回 Promise类型 里面是用户是否授权的布尔值

  1. PermissionsAndroid.check(permission) //permission是String型

//返回String类型

‘granted’: 同意了

‘denied’ : 拒绝了

‘never_ask_again’ : 永久性拒绝下次再请求用户也看不到了,尴不尴尬

  1. PermissionsAndroid.request(permission, rationale?) //permission是String型,rationale对象

//返回一个对象

  1. PermissionsAndroid.requestMultiple(permissions) //permissions为String型数组

//就举一个例子 记得加上async异步

async requestReadPermission() {

try {

//返回string类型

const granted = await PermissionsAndroid.request(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,

{

//第一次请求拒绝后提示用户你为什么要这个权限

‘title’: ‘我要读写权限’,

‘message’: ‘没权限我不能工作,同意就好了’

}

)

if (granted === PermissionsAndroid.RESULTS.GRANTED) {

this.show(“你已获取了读写权限”)

} else {

this.show(“获取读写权限失败”)

}

} catch (err) {

this.show(err.toString())

}

}

//核实

checkPermission() {

try {

//返回Promise类型

const granted = PermissionsAndroid.check(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE

)

granted.then((data)=>{

this.show(“是否获取读写权限”+data)

}).catch((err)=>{

this.show(err.toString())

})

} catch (err) {

this.show(err.toString())

}

}

//请求多个

async requestMultiplePermission() {

try {

const permissions = [

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,

PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,

PermissionsAndroid.PERMISSIONS.CAMERA

]

//返回得是对象类型

const granteds = await PermissionsAndroid.requestMultiple(permissions)

var data = "是否同意地址权限: "

if (granteds[“android.permission.ACCESS_FINE_LOCATION”] === “granted”) {

data = data + “是\n”

} else {

data = data + “否\n”

}

data = data+"是否同意相机权限: "

if (granteds[“android.permission.CAMERA”] === “granted”) {

data = data + “是\n”

} else {

data = data + “否\n”

}

data = data+"是否同意存储权限: "

if (granteds[“android.permission.WRITE_EXTERNAL_STORAGE”] === “granted”) {

data = data + “是\n”

} else {

data = data + “否\n”

}

this.show(data)

} catch (err) {

this.show(err.toString())

}

}

  • 完整代码

import React,{Component} from ‘react’

import {

StyleSheet,

View,

Text,

TouchableOpacity,

ToastAndroid,

PermissionsAndroid,

} from ‘react-native’

export default class PermissionAndroidView extends Component {

render() {

return (

<TouchableOpacity style={styles.button_view}

onPress={this.requestReadPermission.bind(this)}>

申请读写权限

<TouchableOpacity style={styles.button_view}

onPress={this.requestCarmeraPermission.bind(this)}>

申请相机权限

<TouchableOpacity style={styles.button_view}

onPress={this.requestLocationPermission.bind(this)}>

申请访问地址权限

<TouchableOpacity style={styles.button_view}

onPress={this.checkPermission.bind(this)}>

查询是否获取了读写权限

<TouchableOpacity style={styles.button_view}

onPress={this.requestMultiplePermission.bind(this)}>

一次申请所以权限

)

}

show(data) {

ToastAndroid.show(data,ToastAndroid.SHORT)

}

/*

  • 弹出提示框向用户请求某项权限。返回一个promise,最终值为用户是否同意了权限申请的布尔值。

  • 其中rationale参数是可选的,其结构为包含title和message)的对象。

  • 此方法会和系统协商,是弹出系统内置的权限申请对话框,

  • 还是显示rationale中的信息以向用户进行解释。

  • */

async requestReadPermission() {

try {

//返回string类型

const granted = await PermissionsAndroid.request(

PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,

{

//第一次请求拒绝后提示用户你为什么要这个权限

‘title’: ‘我要读写权限’,

‘message’: ‘没权限我不能工作,同意就好了’

}

)

if (granted === PermissionsAndroid.RESULTS.GRANTED) {

this.show(“你已获取了读写权限”)

} else {

this.show(“获取读写权限失败”)

}

} catch (err) {

this.show(err.toString())

}

}

题外话

我们见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了7、8年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

注意:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

注意:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-p2pthB1X-1715623785667)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值