我在我的大学提供的在线存储上有一个txt文件,我想在android应用程序中读取它。我已经设法在Java中这样做,但是当我在Android中尝试这样做时,没有任何反应。 Eclipse建议改变了代码,没有任何工作。请帮助我我是Android开发新手。从url中读取文件java到android的问题
a.txt文件包含内容:这是一条消息!
这是java代码:
import java.io.*;
import java.net.*;
public class Java_Parser {
public static void main(String[] args) throws Exception {
URL oracle = new URL("http://cgi.di.uoa.gr/~std10108/a.txt");
BufferedReader in = new BufferedReader(
new InputStreamReader(oracle.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
,输出为,因为它应该是:这是一个消息!
我已将互联网权限添加到清单,所以它不是问题。 我复制粘贴在Android项目的功能和Eclipse的事实证明这个建议后:
//This a function called when a button is clicked
public void OnClick(View view){
URL oracle = null;
BufferedReader in = null;
String inputLine;
String text=null;
try {
oracle = new URL("http://cgi.di.uoa.gr/~std10108/a.txt");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
in = new BufferedReader(
new InputStreamReader(oracle.openStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
while ((inputLine = in.readLine()) != null)
text=text + inputLine;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
EditText edittext= (EditText) findViewById(R.id.editText1);
edittext.setText(text);
}
应用程序成功地编译,但是当我尝试运行它,然后单击按钮,它崩溃。你可以帮我吗?
这是logcat的
> 11-20 17:40:04.089: I/Process(9926): Sending signal. PID: 9926 SIG: 9
> 11-20 17:50:37.009: D/libEGL(10534): loaded
> /system/lib/egl/libEGL_mali.so 11-20 17:50:37.014: D/libEGL(10534):
> loaded /system/lib/egl/libGLESv1_CM_mali.so 11-20 17:50:37.014:
> D/libEGL(10534): loaded /system/lib/egl/libGLESv2_mali.so 11-20
> 17:50:37.024: D/(10534): Device driver API match 11-20 17:50:37.024:
> D/(10534): Device driver API version: 10 11-20 17:50:37.024:
> D/(10534): User space API version: 10 11-20 17:50:37.024: D/(10534):
> mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST
> 2012 11-20 17:50:37.054: D/OpenGLRenderer(10534): Enabling debug mode
> 0 11-20 17:50:39.449: D/AndroidRuntime(10534): Shutting down VM 11-20
> 17:50:39.449: W/dalvikvm(10534): threadid=1: thread exiting with
> uncaught exception (group=0x416d22a0) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): FATAL EXCEPTION: main 11-20 17:50:39.454:
> E/AndroidRuntime(10534): java.lang.IllegalStateException: Could not
> execute method of the activity 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> android.view.View$1.onClick(View.java:3704) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> android.view.View.performClick(View.java:4232) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> android.view.View$PerformClick.run(View.java:17318) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> android.os.Handler.handleCallback(Handler.java:615) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> android.os.Handler.dispatchMessage(Handler.java:92) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> android.os.Looper.loop(Looper.java:137) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> android.app.ActivityThread.main(ActivityThread.java:4921) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> java.lang.reflect.Method.invokeNative(Native Method) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> java.lang.reflect.Method.invoke(Method.java:511) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> dalvik.system.NativeStart.main(Native Method) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): Caused by:
> java.lang.reflect.InvocationTargetException 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> java.lang.reflect.Method.invokeNative(Native Method) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> java.lang.reflect.Method.invoke(Method.java:511) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> android.view.View$1.onClick(View.java:3699) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): ... 11 more 11-20 17:50:39.454:
> E/AndroidRuntime(10534): Caused by:
> android.os.NetworkOnMainThreadException 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> java.net.InetAddress.lookupHostByName(InetAddress.java:385) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> java.net.InetAddress.getAllByName(InetAddress.java:214) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpEngine.connect(HttpEngine.java:310) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
> 11-20 17:50:39.454: E/AndroidRuntime(10534): at
> java.net.URL.openStream(URL.java:462) 11-20 17:50:39.454:
> E/AndroidRuntime(10534): at
> com.example.test.MainActivity.OnClick(MainActivity.java:55) 11-20
> 17:50:39.454: E/AndroidRuntime(10534): ... 14 more
EDIT1:我加入了上网权限,但什么都没有改变
获取从logcat中崩溃的堆栈跟踪和编辑您的问题,包括这一点。我的猜测是,你没有包括你的应用程序的互联网许可 – dymmeh
可能是服务器拒绝连接。发布你的stacktrace到问题 –
Sry,但我是Android新手,这可能是一个愚蠢的问题:什么是堆栈跟踪,我如何访问它? – JmRag