C++学习(四八八)android下载权限及下载崩溃
Posted hankern
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习(四八八)android下载权限及下载崩溃相关的知识,希望对你有一定的参考价值。
问题描述:设置了网络下载权限,但是执行下载时程序崩溃。
打开下载权限方法,在androidManifest.xml文件中添加
<uses-permission android:name="android.permission.INTERNET" />
下载程序崩溃,有两个原因,一是Android9.0(API28)以后默认将禁止明文访问网络,只允许使用https url访问;二是下载资源的程序和Activity在一个线程中。
第一个原因,可采用文章Android 9 请求网络报异常:Cleartext HTTP traffic not permitted_JWangZzz的博客-CSDN博客中的方法,本文使用的是:
android:usesCleartextTraffic="true"
第二个原因,需要将下载程序放在一个单独的线程中。
下载线程代码如下:
Thread t=new Thread()
public void run()
//下载图片的路径
String iPath="http://online2.map.bdimg.com/tile/?qt=tile&x=4&y=4&z=5&styles=pl&udt=20171031&scaler=1&p=1";
try
//对资源链接
URL url=new URL(iPath);
//打开输入流
InputStream inputStream=url.openStream();
//对网上资源进行下载转换位图图片
bitmap= BitmapFactory.decodeStream(inputStream);
inputStream.close();
//再一次打开
inputStream=url.openStream();
File file=new File(Environment.getExternalStorageDirectory()+"/haha.gif");
FileOutputStream fileOutputStream=new FileOutputStream(file);
int hasRead=0;
while((hasRead=inputStream.read())!=-1)
fileOutputStream.write(hasRead);
fileOutputStream.close();
inputStream.close();
catch (MalformedURLException e)
e.printStackTrace();
catch (IOException e)
Log.v("111","2222");
System.out.println("haha1");
e.printStackTrace();
System.out.println("haha2");
;
;
启动下载线程的方法如下:
OnClickListener uiListenerCenterView = new OnClickListener()
public void onClick(View v)
//Log.d(TAG, "Center View");
osgNativeLib.keyboardDown(32);
osgNativeLib.keyboardUp(32);
new Thread(t).start();
;
以上是关于C++学习(四八八)android下载权限及下载崩溃的主要内容,如果未能解决你的问题,请参考以下文章
C++学习(四八七)android studio println的输出位置