【问题标题】:How to use webview or open URL in AndEngine - Android如何在 AndEngine 中使用 webview 或打开 URL - Android
【发布时间】:2012-07-31 13:15:51
【问题描述】:

我在我的 Android 应用中使用了一个名为 AndEngine 的游戏引擎(我完全不熟悉它)。我需要根据屏幕操纵杆的位置(上传到 .cgi 服务器)从应用程序加载不同的 URL。困境是我无法打开 URL 连接!这可能看起来很简单,但我到处寻找,尝试了多种解决方案,但没有任何效果。在基本的 Android 中,我一直使用 WebView(loadUrl() 方法),并且效果很好。但是,我不知道如何在使用 AndEngine 的同时创建 webview。我的偏好是没有显示连接(在 AndEngine 场景下加载?),因为我需要屏幕来处理其他事情。我也尝试过其他解决方案。我刚刚尝试了这段代码,但是当我检查服务器时,什么都没有打开:

    @Override
public void onLoadResources() {

    //methods n/a to this question

    try {
        URL url = new URL(setUrl);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        readStream(con.getInputStream());
    } catch (Exception e) {
        e.printStackTrace();
    }

    return scene; // AndEngine return statement
}

private void readStream(InputStream in) {
    BufferedReader reader = null;
    try {
        reader = new BufferedReader(new InputStreamReader(in));
        String line = "";
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

**我之前尝试过使用 HTTPConnection 类(没有 AndEngine)打开一个 URL,但无济于事。所以可能是我在这里做错了什么。使用 AndEngine GLES2。如果需要更多信息,请告诉我(这是我关于 SO 的第一个问题)。

还尝试使用在 AndEngine 上设置我的 .xml 布局

@Override
protected int getLayoutID() {
return R.layout.main;
}

但它说:“Control 类型的方法 getLayoutID() 必须覆盖或实现超类型方法”

编辑回应 Nicolas Gramlich:互联网权限已设置,编译器最初为 1.6。还是不知道是什么问题。

【问题讨论】:

    标签: android android-webview andengine httpconnection


    【解决方案1】:

    我解决了我的问题。我必须在与主线程分开的线程上运行所有网络操作(否则它将引发 NetworkOnMainThread 异常)。我不知道为什么没有其他工作,但这成功了!在这里,我使用我想要执行的操作创建一个新线程,然后在处理完异常后启动它。我找到了我的答案here

    new Thread(new Runnable() {
    public void run() {
    HttpClient httpClient = new DefaultHttpClient();
    HttpContext localContext = new BasicHttpContext();
    HttpGet httpGet = new HttpGet("your_url");
    try {
    HttpResponse response = httpClient.execute(httpGet, localContext);
    } catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }).start(); 
    

    【讨论】:

    • 我正在尝试在 Android 中使用 AndEngine,在我的情况下,我想用 webview 打开一个新活动,但是当我这样做时,加载新视图需要太多时间......任何想法在这里。
    • 您能详细说明一下吗?您是说要打开一个包含 webview 的新活动吗?而且我也经历过 webview 的加载速度有点慢,这取决于我的连接
    【解决方案2】:
    1. xml <manifest xlmns:android...> ... <uses-permission android:name="android.permission.INTERNET"/> </manifest>

    2. 将 java 编译器合规性设置为 1.6

    【讨论】:

    • 您好,非常感谢您的回复。但是,我确实设置了 Internet 权限。问题仍然反复出现。并且编译器自动设置为1.6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 2018-10-25
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多