0

私は元々 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 なのですか? 私のコードには何が欠けていますか?

注: 関連するアクセス許可は既に追加しているので、ここでは問題になりません。

4

1 に答える 1

0

あなたの場合、開いている接続はnullを返すので、最初にインターネットの許可があるかどうかを確認してください:

uses-permission android:name="android.permission.INTERNET"/

于 2013-08-28T20:51:58.043 に答える