엑스트라을 가지고이 여기 내 첫 번째 게시물, 그리고 내가 잘 할 희망과 내가 편집하기 위해 노력하고있어 ...java.lang.RuntimeException가 : 의도 android.os.NetworkOnMainThreadException
을 서비스를 시작할 수 없습니다 오픈 소스 업데이터 (YAOS 업데이터). 연결하려고하면 오류가 발생합니다.
나는 더 잘 설명하려고 노력할 것이다.
모든 파일을 나열하는 데 사용되는 JSON에 값을 추가했습니다. 각 파일의 새 값은 urlArchivo이며 파일의 전체 URL을 포함합니다.
Log.d("Dexafree", "Intentando conectar a: " +urlArchivo);
이의 정확한 전체 URL을 반환
package org.yaosupdater.services;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import org.yaosupdater.R;
import android.annotation.TargetApi;
import android.app.DownloadManager;
import android.app.DownloadManager.Query;
import android.app.DownloadManager.Request;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
@TargetApi(16)
public class DownloadService extends Service{
private DownloadManager dm;
private String nombre;
private String archivo;
private String urlArchivo;
private String[] mirrors;
private long enqueue;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onStart(Intent intent, int startid){
super.onStart(intent, startid);
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Bundle bundle = intent.getExtras();
nombre = (String) bundle.get("nombre");
Log.d("Dexafree", "Nombre: " +nombre);
archivo = (String) bundle.get("archivo");
Log.d("Dexafree", "Archivo: " +archivo);
urlArchivo = (String) bundle.getString("urlArchivo");
Log.d("Dexafree", "urlArchivo: " +urlArchivo);
mirrors = (String[]) bundle.get("mirrors");
URL url;
int j = 0;
boolean found = false;
while((j < mirrors.length)&&(!found)){
try {
url = new URL(urlArchivo);
Log.d("Dexafree", "Intentando conectar a: " +urlArchivo);
//url = new URL(urlArchivo);
//Log.d("Dexafree", "Intentando conectar a: " +urlArchivo);
URLConnection urlCon = url.openConnection();
Log.d("Dexafree", "Conexion abierta a: " +urlCon);
Log.d("Dexafree", "Debe ser igual a: " + urlArchivo);
InputStreamReader is = new InputStreamReader(urlCon.getInputStream());
found = true;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
Log.d("MIUIEsUpdater", "El archivo " +urlArchivo +" no se encontró.");
found = false;
}
j++;
}
j--;
변수 urlArchivo에서, 로그 캣에, 내 말은, 올바른 URL을 가져옵니다
이
코드의 일부이다 파일,하지만 다음 FC를 보여주는 FC08-19 14:51:40.417: E/Trace(4134): error opening trace file: No such file or directory (2)
08-19 14:51:40.449: D/Dexafree(4134): Nombre: MODEM KF1
08-19 14:51:40.453: D/Dexafree(4134): Archivo: Modem_KF1.zip
08-19 14:51:40.453: D/Dexafree(4134): urlArchivo: http://content.wuala.com/contents/elitemovil/Galaxy_S/GT-I9000/carpetaprueba/Modem_KF1.zip
08-19 14:51:40.453: D/Dexafree(4134): Intentando conectar a: http://content.wuala.com/contents/elitemovil/Galaxy_S/GT-I9000/carpetaprueba/Modem_KF1.zip
08-19 14:51:40.453: D/Dexafree(4134): Conexion abierta a: libcore.net.http.HttpURLConnectionImpl:http://content.wuala.com/contents/elitemovil/Galaxy_S/GT-I9000/carpetaprueba/Modem_KF1.zip
08-19 14:51:40.453: D/Dexafree(4134): Debe ser igual a: http://content.wuala.com/contents/elitemovil/Galaxy_S/GT-I9000/carpetaprueba/Modem_KF1.zip
08-19 14:51:40.457: D/AndroidRuntime(4134): Shutting down VM
08-19 14:51:40.457: W/dalvikvm(4134): threadid=1: thread exiting with uncaught exception (group=0x40edb300)
08-19 14:51:40.500: E/AndroidRuntime(4134): FATAL EXCEPTION: main
08-19 14:51:40.500: E/AndroidRuntime(4134): java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=org.yaosupdater/.services.DownloadService (has extras) }: android.os.NetworkOnMainThreadException
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2507)
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.app.ActivityThread.access$1900(ActivityThread.java:130)
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.os.Handler.dispatchMessage(Handler.java:99)
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.os.Looper.loop(Looper.java:137)
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-19 14:51:40.500: E/AndroidRuntime(4134): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 14:51:40.500: E/AndroidRuntime(4134): at java.lang.reflect.Method.invoke(Method.java:511)
08-19 14:51:40.500: E/AndroidRuntime(4134): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-19 14:51:40.500: E/AndroidRuntime(4134): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-19 14:51:40.500: E/AndroidRuntime(4134): at dalvik.system.NativeStart.main(Native Method)
08-19 14:51:40.500: E/AndroidRuntime(4134): Caused by: android.os.NetworkOnMainThreadException
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
08-19 14:51:40.500: E/AndroidRuntime(4134): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
08-19 14:51:40.500: E/AndroidRuntime(4134): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
08-19 14:51:40.500: E/AndroidRuntime(4134): at java.net.InetAddress.getAllByName(InetAddress.java:214)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:341)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
08-19 14:51:40.500: E/AndroidRuntime(4134): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
08-19 14:51:40.500: E/AndroidRuntime(4134): at org.yaosupdater.services.DownloadService.onStart(DownloadService.java:73)
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.app.Service.onStartCommand(Service.java:450)
08-19 14:51:40.500: E/AndroidRuntime(4134): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490)
08-19 14:51:40.500: E/AndroidRuntime(4134): ... 10 more
나는 sol에 필요한 모든 정보를 게시했으면 좋겠다. 이 문제. 더 자세한 정보가 필요하면 알려주십시오.
우선, 답변 해 주셔서 감사합니다. 하지만이 파일은 별도의 파일입니다.이 파일은 주 .java 파일이 아닙니다 ... 나는 다음과 같이 말합니다 : S – dexafree
주 스레드에서 실행되는 경우 아무 것도 변경되지 않습니다. – nullpotent
흠은 자신의 스레드에서 실행해야하는 서비스가 아닙니다. – sherpya