AS在模拟器上能正常运行,但是用手机打开就闪退
今天我自己做了一个简单的音乐播放器,在模拟器上能够正常的运行,但是我把它下载到手机后,一打开运行就闪退,于是我导出APK找我朋友下载来试试,他的手机却能够正常运行,于是我把手机连上AS查看报错,报错提示如下:
报错这里显示没有权限,我检查了一遍manifests,里面已经加了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
于是我把报错信息复制粘贴到网上找,找了一晚上都没找到一个可以成功的方法,正在我准备放弃的时候,头脑灵机一动,心想它既然提示我没有读取权限,那么我就搜如何获取权限,结果终于被我在一篇文章上找到了解决办法。太感谢这位博主了,有强迫症的我,遇到问题不解决就睡不着。
博客文章:https://blog.csdn.net/weixin_45444405/article/details/100935903
解决方法
需要在MainActivity下添加以下代码来手动获取权限
在onCreate下添加:
protected void judgePermission();
在onCreate外添加
protected void judgePermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// 检查该权限是否已经获取
// 权限是否已经 授权 GRANTED---授权 DINIED---拒绝
// sd卡权限
String[] SdCardPermission = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (ContextCompat.checkSelfPermission(this, SdCardPermission[0]) != PackageManager.PERMISSION_GRANTED) {
// 如果没有授予该权限,就去提示用户请求
ActivityCompat.requestPermissions(this, SdCardPermission, 100);
}
//手机状态权限
String[] readPhoneStatePermission = {Manifest.permission.READ_PHONE_STATE};
if (ContextCompat.checkSelfPermission(this, readPhoneStatePermission[0]) != PackageManager.PERMISSION_GRANTED) {
// 如果没有授予该权限,就去提示用户请求
ActivityCompat.requestPermissions(this, readPhoneStatePermission, 200);
}
//定位权限
String[] locationPermission = {Manifest.permission.ACCESS_FINE_LOCATION};
if (ContextCompat.checkSelfPermission(this, locationPermission[0]) != PackageManager.PERMISSION_GRANTED) {
// 如果没有授予该权限,就去提示用户请求
ActivityCompat.requestPermissions(this, locationPermission, 300);
}
String[] ACCESS_COARSE_LOCATION = {Manifest.permission.ACCESS_COARSE_LOCATION};
if (ContextCompat.checkSelfPermission(this, ACCESS_COARSE_LOCATION[0]) != PackageManager.PERMISSION_GRANTED) {
// 如果没有授予该权限,就去提示用户请求
ActivityCompat.requestPermissions(this, ACCESS_COARSE_LOCATION, 400);
}
String[] READ_EXTERNAL_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE};
if (ContextCompat.checkSelfPermission(this, READ_EXTERNAL_STORAGE[0]) != PackageManager.PERMISSION_GRANTED) {
// 如果没有授予该权限,就去提示用户请求
ActivityCompat.requestPermissions(this, READ_EXTERNAL_STORAGE, 500);
}
String[] WRITE_EXTERNAL_STORAGE = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (ContextCompat.checkSelfPermission(this, WRITE_EXTERNAL_STORAGE[0]) != PackageManager.PERMISSION_GRANTED) {
// 如果没有授予该权限,就去提示用户请求
ActivityCompat.requestPermissions(this, WRITE_EXTERNAL_STORAGE, 600);
}
}else{
}
}
添加后,打开就会弹出获取权限的对话框,然后点击允许即可,然后APP就能够在手机上运行啦。。。。。。
aaaaaaaaaaa真的太感谢这位博主了。。。。。。
aaaaaaaaaaa真的太感谢这位博主了。。。。。。
aaaaaaaaaaa真的太感谢这位博主了。。。。。。
感谢3连~~~~~~~
这是我第一次写的文章,写的还有很多不足的地方,请多多包涵。
再发一下文章的地址
转博客文章:https://blog.csdn.net/weixin_45444405/article/details/100935903