開啟網頁可用 Uri 搭配 Intent 來達成 , 如下
1: Uri uri = Uri.parse("http://vulpesadn.blogspot.tw/");
2: Intent intent = new Intent(Intent.ACTION_VIEW, uri);
3: startActivity(intent);
還要記得在 AndroidManifest.xml 加入網路許可
<uses-permission android:name="android.permission.INTERNET" />
開啟網頁在很多情況都會使用到,如離開程序之後強制連到官網, 或是在程序中有更多商品的選項時,都會直接連結到官網中,當然我們也能在連網之前先檢查網路狀態,在沒有連線的情況就能直接離開程序而不連到官網了
檢查網路狀態,必須加入存取網路許可
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
接著使用 ConnectivityManager 來取得 NetworkInfo 的 isConnected( ) 來取得連網狀態,如下
1: ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
2:
3: NetworkInfo ni = cm.getActiveNetworkInfo();
4: if (ni != null && ni.isConnected()) {
5:
6: Uri uri = Uri.parse("http://vulpesadn.blogspot.tw/");
7: Intent intent = new Intent(Intent.ACTION_VIEW, uri);
8: startActivity(intent);
9:
10: } else if (ni == null) {
11:
12: finish(); // exit program
13: }
第 1 行建立 ConnectivityManager cm 來取得連網狀態, getSystemService 為 Context 類別的方法
第 3 行取得 NetworkInfo ni 來判斷 ni 的狀態
第 4 行注意除了 ni.isConnected() 的判斷之外還要小心 ni 是否為 null
第 6 ~ 8 行就是開啟網頁的方法了
第 10 行若 ni == null 就離開程序
我把上述做法加到版權聲明的流程,整體程式碼如下
1: package com.example.helloworld;
2:
3: import android.app.Activity;
4: import android.content.Context;
5: import android.content.Intent;
6: import android.graphics.Typeface;
7: import android.net.ConnectivityManager;
8: import android.net.NetworkInfo;
9: import android.net.Uri;
10: import android.os.Bundle;
11: import android.view.Gravity;
12: import android.view.View;
13: import android.view.View.OnClickListener;
14: import android.webkit.WebView;
15: import android.widget.Button;
16: import android.widget.TextView;
17: import android.widget.Toast;
18:
19: public class MainActivity extends Activity {
20:
21: static final String tLog = "Trace Log";
22:
23: TextView tv; // init by xml use
24:
25: Button bYes; // enter button
26: Button bNo; // exit button
27:
28: @Override
29: public void onCreate(Bundle savedInstanceState) {
30:
31: super.onCreate(savedInstanceState);
32:
33: initByXml();
34:
35: }
36:
37: void initByXml() {
38: setContentView(R.layout.activity_main);
39: // TextView init
40: tv = (TextView) findViewById(R.id.textView1);// why can't cast to
41: // TestTextView
42: tv.setTextColor(0xff888888); // set color
43: tv.setTextSize(18.0f); // set size
44: tv.setTypeface(Typeface.SERIF);// set typeface
45: tv.setText(R.string.copy_right);// change text
46: tv.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
47:
48: // ButtonYes init
49: bYes = (Button) findViewById(R.id.buttonYes); // get ButtonYes
50: OnClickListener bYesOc = new OnClickListener() { // build ButtonYes Listener
51:
52: @Override
53: public void onClick(View v) {
54: // TODO Auto-generated method stub
55:
56: Intent goAct = new Intent();// new a Intent
57: goAct.setClass(MainActivity.this, GetDisplaySize.class); // set class
58: startActivity(goAct); // start another Activity
59: finish(); // exit program
60:
61: }
62: };
63: bYes.setOnClickListener(bYesOc);// set ButtonYes Listener
64:
65: // ButtonNo init
66: bNo = (Button) findViewById(R.id.buttonNo); // get ButtonNo
67: bNo.setOnClickListener(new OnClickListener() { // build ButtonNo Listener
68:
69: @Override
70: public void onClick(View v) {
71: // TODO Auto-generated method stub
72:
73: ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
74:
75: NetworkInfo ni = cm.getActiveNetworkInfo();
76: if (ni != null && ni.isConnected()) {
77:
78: Uri uri = Uri.parse("http://vulpesadn.blogspot.tw/");
79: Intent intent = new Intent(Intent.ACTION_VIEW, uri);
80: startActivity(intent);
81: finish(); // exit program
82: } else if (ni == null) {
83:
84: finish(); // exit program
85: }
86: }
87: });
88: }
89: }
結果為
在開啟網路的情況下按下離開會直接連到我的部落格
沒有開啟網路的情況,就離開程序囉
NetworkInfo 還能取得更多關於連網的詳細資料,如是否漫遊,連網的詳細資訊等等,不過離開程序後強制連到官網的做法有待商榷,畢竟這並不是好的方式,很容易造成使用者的反感!! 慎行!!
0 意見:
張貼留言