私は元々 Java だけで作成したプログラムを持っていますが、現在それを Android 用のアプリとしてフォーマットしようとしています。このプログラムは、Java コンソールでは思いどおりに動作しますが、Android アプリケーションとして実行すると動作しません。
これは、私のアクティビティ クラスに関連するコードです。
public class ViewTeamStatsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_team_stats);
ArrayList<Team> teams = new ArrayList<Team>();
//Want to make sure there is a network available.
//This always returns true since I added the relevant permissions in the manifest
if (isNetworkAvailable()) {
Main m = new Main();
teams = m.download();
}
そのため、最終的に Retrieve クラスを呼び出す Main クラスを呼び出します。このクラスは、特定の URL から HTML を取得し、コンテンツを使用可能なデータに解析して、ArrayList として返すことになっています。
//Retrieves the HTML from the specified URL and then parses it into usable data.
public ArrayList<Game> Retrieve(String url) {
this.url = url;
ArrayList<Game> data = new ArrayList<Game>();
try {
URL my_url = new URL(url);
URLConnection conn = my_url.openConnection();
//The following returns null when run "as an Android Application" but not in the Java console. Why?
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
sort.addBufferedReader(br);
data = sort.sort();
} catch (Exception ex) {
ex.printStackTrace();
}
return data;
}
私の質問は、プログラムが Android で実行されている場合、なぜ BufferedReader 'br' null なのですか? 私のコードには何が欠けていますか?
注: 関連するアクセス許可は既に追加しているので、ここでは問題になりません。