このファイルの内容を取得し、それを文字列に保存したいと思います。
AsyncTask を使用してみました (この回答に基づいて)。これが私のクラスです。
class RetreiveURLTask extends AsyncTask<Void, Void, String> {
private Exception exception = null;
public String ResultString = null;
protected String doInBackground(Void ... something) {
URL url;
try {
url = new URL("http://stream.lobant.net/ccfm.info");
HttpURLConnection urlConnection;
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
String stream_url = IOUtils.toString(in, "UTF-8");
urlConnection.disconnect();
return stream_url;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (Exception e) {
this.exception = e;
return null;
}
}
protected void onPostExecute(String stream_url) {
// TODO: check this.exception
// TODO: do something with the feed
if (this.exception != null)
this.exception.printStackTrace();
this.ResultString = stream_url;
}
}
AsyncTask クラスを次のように使用してみました。
AsyncTask<Void, Void, String> stream_task = new RetreiveURLTask().execute();
String stream_url = stream_task.ResultString;
しかし、ResultString は認識されません。
これがどのように機能するかについて私は混乱しています。AsyncTask はバックグラウンドで実行されるため、文字列をパブリック変数の 1 つに割り当てることができたとしても、割り当てを行ったときにそれが有効であるという保証はありません。何らかの getResult() 関数を使用する場合でも、コードの実行が完了するように呼び出すタイミングを知る必要があります。
では、これは通常どのように行われるのでしょうか。
(また、私の http 読み取りコードは大丈夫ですか?)
私の能力: コーディングはできますが、Android は初めてです。