• android:从互联网上下载txt文件时出现NetworkOnMainThreadException的解决方法


    解决方法1:在Activity的onCreate()方法中加入如下代码:

    	    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());  
    	    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()  
           .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()          .build());  
    

     解决方法2:  在AndroidManifest.xml文件中加入如下标记:
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    本来这个标记开是的时候就是加了,但是就是没用,后来试着把 <uses-sdk
            android:minSdkVersion="4"/>这段标记加在上面两个标记前面就可以了。原先没该之前uses-sdk标记是这样的:    <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />

    附加一份从互联网上下在txt文件的方法(该方法返回String字符串)

    private URL url=null;
    	public String download(String urlString)
    	{
    		StringBuffer sbBuffer=new  StringBuffer();
    		String line=null;
    		BufferedReader buffer=null;
    		try
    		{
    			 System.out.println("错");
    			//创建一个URL对象
    		   url=new URL(urlString);
    		   //创建一个Http连接
    		   HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
    		   System.out.println("创建连接成功");
    		   //使用IO流读取数据
    		   buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream(),"GB2312"));
    		 //  buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    		   System.out.println("使用IO流读取数据成功");
    		   while ((line = buffer.readLine()) != null) {
    			   sbBuffer.append(line);
    			   
    			}
    		   System.out.println("唔错");
    		} catch (Exception e)
    		{
    			// TODO: handle exception
    		//	System.out.println(e.getMessage());
    		//	e.
    			e.printStackTrace();
    			StackTraceElement[] stElements=e.getStackTrace();
    			for (StackTraceElement stackTraceElement : stElements)
    			{
    		
    				String exclass = stackTraceElement.getClassName();
    				String method = stackTraceElement.getMethodName();
    				System.out.println(":" + "[类:" + exclass + "]调用"
    				+ method + "时在第" + stackTraceElement.getLineNumber()
    				+ "行代码处发生异常!异常类型:" + e.getClass().getName());
    			}
    		}
    		finally
    		{
    			try
    			{
    				buffer.close();
    			} catch (Exception e2)
    			{
    				// TODO: handle exception
    			//	System.out.println();
    				e2.printStackTrace();
    			}
    			
    			
    		}
    		return sbBuffer.toString();
    	}
    
    Android 成长之路
  • 相关阅读:
    layUI--实现分页
    maven项目-----Dynamic Web Module 3.0 requires Java 1.6 or newer
    js---open打开新窗口
    hibernate常见问题?
    eclipse如何修改dynamic web module version
    设计模式之五种创建型模式学习笔记
    设计模式学习笔记
    数据定义语言(DDL Data Definition Language)基础学习笔记
    idea安装成功后,设置字体、快捷键、配置jdk等操作
    基于Redis实现分布式锁
  • 原文地址:https://www.cnblogs.com/liende/p/3303454.html
Copyright © 2020-2023  润新知