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();
    }

所以它调用了我的 Main 类,它最终调用了 Retrieve 类。然后这个类应该从特定的 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 所以首先检查您是否有权访问 Internet:

使用权限 android:name="android.permission.INTERNET"/

于 2013-08-28T20:51:58.043 回答