我正在尝试获取 HTML 源代码,但它卡住了应用程序。 我不知道是什么问题,我添加了 Internet Permission 我从网站上获取了这段代码,但它对我不起作用。它会一直工作,直到我按下按钮,然后它才会停止。
我希望有人能帮我解决这个问题,这是我正在使用的代码:
public class MainActivity extends Activity {
private String HTML = "";
EditText tv;
private ProgressDialog m_ProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.button1);
tv = (EditText)findViewById(R.id.editText1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
getHTML("http://m.Facebook.com/");
}
});
}
public void getHTML(String paramString)
{
try
{
BufferedInputStream localBufferedInputStream = new BufferedInputStream(new URL(paramString).openConnection().getInputStream());
ByteArrayBuffer localByteArrayBuffer = new ByteArrayBuffer(50);
while (true)
{
int i = localBufferedInputStream.read();
if (i == -1)
{
HTML = new String(localByteArrayBuffer.toByteArray());
handler.sendEmptyMessage(0);
return;
}
i = (byte)i;
localByteArrayBuffer.append(i);
}
}
catch (Exception localException)
{
while (true)
this.HTML = "Error!";
}
}
private Handler handler = new Handler()
{
public void handleMessage(Message paramMessage)
{
EditText localEditText = (EditText)MainActivity.this.findViewById(R.id.editText1);
MainActivity.this.m_ProgressDialog.dismiss();
localEditText.setText(MainActivity.this.HTML);
}
};
}
最佳答案
这与 WebView 有什么关系?您有一个 NetworkOnMainThreadExeption
。您必须将代码放在 AsyncTask 或 Thread 中以防止出现这种情况。
关于android - 从WebView获取网站源码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26075957/