【发布时间】:2015-08-31 16:55:50
【问题描述】:
我正在使用 android 进行网络通信项目,但我的应用程序无法正常工作!经过一些调试,我发现每个网络请求都有来自系统的空响应。
我尝试了很多方法,例如: 1)硬重启我的手机 2) 将所有网络权限添加到清单文件中
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
3) 使用本地网络(我的手机作为服务器) 4)让所有应用程序连接到网络:设置>联网应用程序> ...
但是!什么都没发生……
这是我的类似问题链接,但是这个话题没有答案: can't connect to internet in ONLY in my android app. Each method to connect internet returns null
网络正在我的手机上运行,因为电报和 Chrome 等一些应用运行良好!
这里有一件有趣的事情,当我将此代码复制并粘贴到简单的 java 项目而不是 android 项目时,它运行良好!
因为我想找出问题出在哪里,所以我只是将简单的 3 行代码复制到简单的 android 项目中,但仍然没有任何反应!
清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.dltests"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/hello"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
源文件
package com.example.dltests;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView mTextView = (TextView) findViewById(R.id.hello);
try
{
URL mUrl = new URL("http://192.168.1.53:8080/some.zip");
HttpURLConnection mHttpURLConnection = (HttpURLConnection) mUrl.openConnection();
mTextView.setText(mHttpURLConnection.getContentLength());
}
catch (Exception e)
{
mTextView.setText("ERROR: " + e.getMessage());
}
}
}
结果是: 错误:空
【问题讨论】:
-
记录异常看NetworkOnMainThreadException,然后想想异常名称是什么意思。
-
您确定您的手机可以访问该网址吗?如果您使用手机的网络浏览器访问192.168.1.53:8080/HiSuiteSetup_2.3.55.1.zip,会发生什么?
-
@laalto:没错!这就是错误:android.os.NetworkOnMainThreadException
-
@elevine : 打开下载应用程序
-
@laalto 是在正确的轨道上。您需要在不同的线程上进行下载。
标签: java android networking null httpurlconnection