2013-06-27 7 views
0

여기 내 onUpdate 코드입니다.내 위젯이 HttpResponse에서 HttpGet을 실행하지 않는 것 같습니다

ComponentName thisWidget = new ComponentName(context, 
      MyWidgetProvider.class); 
     int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); 
     final int N = appWidgetIds.length; 



    for (int ii = 0; ii < N ; ii++) 
    { 
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
      R.layout.widget_layout); 
    Toast.makeText(context, "Loading", Toast.LENGTH_SHORT).show(); 
    remoteViews.setTextViewText(R.id.update, "Loading2"); 


try { 
    data = connect(); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 


    now = Calendar.getInstance(); 
    timeHour = now.get(Calendar.HOUR_OF_DAY); 

    remoteViews.setTextViewText(R.id.update, "The latest PSI reading is " + data); 



Intent intent = new Intent(context, MyWidgetProvider.class); 

intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); 
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 
    0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 


remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent); 

appWidgetManager.updateAppWidget(allWidgetIds, remoteViews); 

    } 
}

그리고 여기는 방법이다()에 연결;

public String connect() throws IOException 
{  String temp = "WAD"; 

    try { 
    HttpClient client = new DefaultHttpClient(); 

    HttpGet get = new HttpGet("http://app2.nea.gov.sg/anti-pollution-radiation-protection/air-pollution/psi/psi-readings-over-the-last-24-hours"); 

    HttpResponse response; 


     response = client.execute(get); 
     HttpEntity entity = response.getEntity(); 

     InputStream in = entity.getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null){ 

      sb.append(line+"\n"); 


     } 
     in.close(); 
     temp = sb.toString(); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return temp; 



} 

는 것은 내 코드 = client.execute이 (수)

응답에서 죽을 것입니다;

LogCat이 나에게 말한 것에 따르면. 그것은 그 줄에있는 태그 "System.err"과 data = connect();에서 지적했다.

connect() 메서드는 위젯이 아닌 다른 응용 프로그램에서 잘 작동하므로 잘못된 내용을 잘 모릅니다.

편집 :

다음은 logcat입니다.

06-27 21 : 30 : 38.058 : System.err에/W (28060) : 30 : 38.058 : W com.example.psi.MyWidgetProvider.connect (MyWidgetProvider.java:284) 06-27 21 /System.err(28060) : com.example.psi.MyWidgetProvider.onUpdate (MyWidgetProvider.java:71) 06-27 21 : 30 : 38.058 : W/System.err (28060) : android.appwidget.AppWidgetProvider .onReceive (AppWidgetProvider.java:66)

+0

전체 스택 추적을 게시하십시오. 일반적으로 답변이 거짓말입니다. – joecks

답변

0

편집 : 나는 그것은 StrictMode의 ThreadPolicy의를 입력했다 솔루션,

,

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
발견

이것이 최선의 방법은 아니라는 것을 알고 있지만 개념 증명을하고 있었고이 앱을 매끄럽게하려고하지 않았습니다.