私が欲しいもの:ユーザーがウィジェットを追加すると、アラームマネージャーが追加されたウィジェットの更新を開始します。ウィジェットは、インターネット (json リソース) からデータを取得します。ウィジェットは専用の json ページを使用します (各ウィジェットにはデータを取得するページがあります: 例: test.json?page=5)
AppWidgetProvider を拡張するクラスが既にあります。このクラスには関数があります。private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId)
この関数内には次のものがあります。
remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
new HttpRequestTask(SELECTED_PAGE).execute(remoteViews);
これは HttpRequestTask クラスです:
class HttpRequestTask extends AsyncTask<RemoteViews, Void, String> {
private RemoteViews rv;
private String url;
public HttpRequestTask(String string) {
url = string;
}
protected String doInBackground(RemoteViews... contextParam) {
String html = "";
try {
rv = contextParam[0];
HttpClient client = new DefaultHttpClient();
HttpGet request
= new HttpGet("http://www.hwlogos.com/"+url+".txt");
HttpResponse response;
response = client.execute(request);
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
str.append(line);
}
in.close();
html = str.toString();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return html;
}
protected void onPostExecute(String html) {
rv.setTextViewText(R.id.ip, html);
}
}
問題は、テキストが更新されないことです。