1

URL から読み取り、URL から取得したテキストをアプリ内の他の目的に使用できるようにするアプリを動作させようとしています。

私が抱えている問題は、テキストが「保存」されていないことです。

IntelliJ で基本的なコマンド ライン アプリケーションを実行したため、#getText メソッドが機能することは事実です。

String textFromUrl;

public static void main(String[] args) {
textFromUrl = Vars.getEngUrlText();
System.out.println(textFromUrl);
}

その結果、本来あるべき正確なテキストが印刷されました。そして、これは Android プロジェクトのメイン アクティビティのクラス内に記述されています。USB デバイスから実際の apk を実行する代わりに、メイン メソッドを通常の Java アプリケーションとして実行しただけです。

次に、In Vars クラスを実行して、Android デバイスで同じことを試みます。

String textFromUrl;

最初のアクティビティの #onCreate で:

Vars.textFromUrl = Vars.getEngUrlText();

TextView tx = (TextView) findViewById(R.id.titletext);
tx.setText(Vars.textFromUrl);

空白、テキストなし、何も表示されません。レイアウトの残りの部分は問題ありませんが、他のすべてが表示され、エラーはありません。textFromUrl の値が null であると想定していますが、その理由はわかりません。

はい、私は WebView を使用しており、正常に動作するため、AndroidManifest で Web にアクセスするための適切な権限を持っています。テキストを変更する前に待機する時間 (約 5 秒) を与えるスレッドを実行してみましたが、それでも機能しません。

どうしたの?

getText と #getEngUrlText を以下に示します。

getEngUrlText は getText を呼び出します。

public static String getText(String url) throws Exception {

        URL website = new URL(url);
        URLConnection connection = website.openConnection();
        BufferedReader in = new BufferedReader(
                new InputStreamReader(
                        connection.getInputStream()));

        StringBuilder response = new StringBuilder();
        String inputLine;

        while ((inputLine = in.readLine()) != null)
            response.append(inputLine);

        in.close();



        return response.toString();
    }

public static String getEngUrlText() {
        try {
            textFromUrl = getText("url that is supposed to be here removed");
        } catch (Exception e) {
            e.printStackTrace();
        }


        return textFromUrl;
    }
4

1 に答える 1

0

下位の SDK をターゲットにすることで、これを修正しました。どうやら、すべての警告などではなく、エラーのみを探していたため、logcat が表示していた NetworkOnMainThreadException が表示されなかったようです。

于 2013-03-15T17:19:32.780 に答える