1

ウェブサイトの特定の部分を読み取って画面に投稿するアプリを作成しています。アプリは現在、Android エミュレーターで動作しますが、Galaxy S2 に転送すると、Web サイトにまったくアクセスしないようです。

package com.example.beam;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;

import org.apache.http.HttpResponse;
import org.apache.http.client.*;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

String current = null;
Button check;
TextView text;
TextView url;
String[] lines = new String[12];

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    check = (Button) findViewById(R.id.checkstatus);
    text = (TextView) findViewById(R.id.textView1);
    url = (TextView) findViewById(R.id.url);

    String[] lines = new String[12];

    check.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            // Attempt to the read the source from a website.
            String bodyHtml = "null";
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new       HttpGet("http://www.spring8.or.jp/ext/ja/status/text.html");
            ResponseHandler<String> resHandler = new BasicResponseHandler();

            try {
                bodyHtml = httpClient.execute(httpGet, resHandler);

            } catch (Exception e) {
                e.printStackTrace();
            }
            double current = 0;
            try{
            String derp = bodyHtml.substring(bodyHtml.lastIndexOf("mA") - 5, bodyHtml.lastIndexOf("mA"));
            current = Double.parseDouble(derp);
            }
            catch(Exception e){

            }
            url.setText(current + " mA");


        }
    });
}

}

コーディングが少し貧弱で乱雑である場合はお詫びします。私はこれらすべてにまったく慣れていません。この問題を解決するにはどうすればよいですか? ありがとうございました

また、マニフェストでパーミッションを正しく設定したと確信しています。

4

1 に答える 1

1

これを試して....

UIスレッドでUIを動かし、 Non-UIスレッドでNon-UIを動かしておくのが良いのですが、HONEYCOMB Android版のリリースからそれがLAWになりました…。それがエラーの原因かもしれません。

したがって、次のことができます....

  1. 別のスレッドで Http を実行してから、 Handler を使用して UI に値を配置し Handler が作成されたスレッドの参照を保持します。

  2. Android 用に特別に設計されたAsyncTaskを使用して、UI スレッドと非 UI スレッドを同期させることができます。

ノート:

AndroidManifest で Internet Permission を確認してください。実行したことはわかっていますが、アプリがエミュレーターで実行された可能性があります。..しかし、もう一度確認しても害はありません。

于 2012-06-28T12:44:38.637 に答える