作者:记忆中的光辉明 | 来源:互联网 | 2023-05-19 09:57
1、WebView的简单使用安卓程序有的需要浏览网页,因此android提供了一个控件叫WebView,话不多说,直接使用界面布局代码,就显示一个WebView<RelativeLayoutx
1、WebView的简单使用
安卓程序有的需要浏览网页,因此android提供了一个控件叫WebView,话不多说,直接使用
界面布局代码,就显示一个WebView
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
>
android:id="@+id/main_show_webView"
android:layout_
android:layout_
/>
处理的代码
public class MainActivity extends Activity {
private WebView mShowWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
//设置隐藏标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mShowWebView=(WebView) findViewById(R.id.main_show_webView);
//通过getSettings进行设置,然后设置支持Javascript
mShowWebView.getSettings().setJavascriptEnabled(true);
mShowWebView.setWebViewClient(new WebViewClient(){
@Override
//该方法表明如果从当前网页跳转到别的网页,还是在当前的webView中显示,不使用系统的浏览器
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
//加载页面
mShowWebView.loadUrl("http://www.baidu.com");
}
}
注意设置网络访问权限
2、HttpURLConnection的简单使用
写一个小例子,向百度发送请求,然后得到请求结果
界面布局
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:orientation="vertical"
>
处理代码(解释见代码注释)
public class SecondActivity extends Activity {
private Button mSendButton;
private TextView mShowTextView;
private Handler mHandler;
private static final String TAG="SecondActivity";
private static final int SEND_REQUEST=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
mSendButton=(Button) findViewById(R.id.second_sendButton);
mShowTextView=(TextView) findViewById(R.id.second_responseTextView);
//通过handler接收到从网页获取到的数据,在主线程进行更新
mHandler=new Handler(){
public void handleMessage(android.os.Message msg) {
if(msg.what==SEND_REQUEST){
StringBuilder result=(StringBuilder) msg.obj;
mShowTextView.setText(result);
}
};
};
mSendButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sendRequestWithHttpURLConection();
}
});
}
private void sendRequestWithHttpURLConection(){
//由于访问网络是耗时操作,因此开一个子线程
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection cOnnection=null;
try {
URL url=new URL("http://www.baidu.com");
//通过给定的url获得connection
cOnnection=(HttpURLConnection) url.openConnection();
//设置请求方法,GET表明从获得数据
connection.setRequestMethod("GET");
//设置超时操作
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
//得到输入流
InputStream in=connection.getInputStream();
//通过输入流读取数据
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
StringBuilder cOntent=new StringBuilder();
String line="";
while((line=reader.readLine())!=null){
content.append(line);
}
//将得到的结果通过handler发送到主线程,在主线程进行UI操作
Message msg=mHandler.obtainMessage(SEND_REQUEST,content);
mHandler.sendMessage(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
3、HttpClient
HttpClient是Apche提供的HTTP网络访问接口,使用比较简单,因为他对一些参数都进行了封装,解释见代码注释
界面代码略
private void sendRequestWithHttpClient() {
new Thread(new Runnable() {
@Override
public void run() {
try {
//HttpClient是一个接口,因此一般new DefaultHttpClient
HttpClient client=new DefaultHttpClient();
//获得HttpClient
HttpGet get=new HttpGet("www.baidu.com");
//执行get请求,得到responce
HttpResponse respOnse=client.execute(get);
//判断是否成功
if(response.getStatusLine().getStatusCode()==200){
//通过EntityUtils将返回内容转化成字符串
String cOntent=EntityUtils.toString(response.getEntity(), "ytf-8");
//发送给mHandler
Message msg = mHandler.obtainMessage(SHOW_RESPONSE,
content); mHandler.sendMessage(msg);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
结果略