將現有網站的鏈接制作成app是一種方便用戶使用的方式,使用戶不必每次打開瀏覽器輸入網址就能夠訪問該網站。實現方法主要有兩種:一種是基于Webview的方式,即通過封裝WebView控件來加載網頁;另一種是通過Hybrid模式,將網頁和Native界面結合起來。
一、基于WebView的應用
1. 獲取網站的URL
首先需要獲取網站的URL,打開Android Studio創建一個新項目,然后在res目錄下的values文件夾中新建一個strings.xml文件,添加一個string類型字符串,用于存儲網站的URL。
```
```
2. 創建布局文件
打開activity_main.xml,添加一個WebView控件,用于顯示網頁。
```
android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 3. 加載網頁 在MainActivity的onCreate方法中獲取WebView控件,并調用loadUrl方法加載網頁。 ``` public class MainActivity extends AppCompatActivity { private WebView mWebView; private String mUrl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mUrl = getString(R.string.url); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl(mUrl); } } ``` 4. 添加權限 為了保證WebView能夠正常訪問網站,需要在AndroidManifest.xml文件中添加如下權限。 ``` ``` 5. 打包apk 在Android Studio中選擇Build - Generate Signed APK,選擇新建一個Keystore或選擇已有Keystore,然后填寫相關信息,選擇Release模式打包即可。 二、Hybrid模式應用 1. 創建Native界面 創建一個Native的Activity,用于顯示網站。 ``` public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } ``` 2. 創建布局文件 在activity_main.xml中添加一個WebView控件和一個ProgressBar控件,用于顯示網頁和加載進度。 ``` xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.hybridapp.MainActivity"> android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="invisible" /> android:id="@+id/progress_bar" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> ``` 3. 加載網頁 在MainActivity的onCreate方法中獲取WebView控件,并設置WebChromeClient和WebViewClient,用于顯示進度和加載網頁。 ``` public class MainActivity extends AppCompatActivity { private WebView mWebView; private ProgressBar mProgressBar; private String mUrl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mUrl = getString(R.string.url); mProgressBar = (ProgressBar) findViewById(R.id.progress_bar); mProgressBar.setMax(100); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebChromeClient(new MyWebChromeClient()); mWebView.setWebViewClient(new MyWebViewClient()); mWebView.loadUrl(mUrl); } private class MyWebChromeClient extends WebChromeClient { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); mProgressBar.setProgress(newProgress); } } private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); mProgressBar.setVisibility(View.GONE); mWebView.setVisibility(View.VISIBLE); } } } ``` 4. 添加Javascript接口 為了實現從Native界面跳轉到網頁的功能,需要添加Javascript接口,在MainActivity中添加如下代碼。 ``` public class MainActivity extends AppCompatActivity { ... @JavascriptInterface public void goToUrl(String url) { mWebView.loadUrl(url); } } ``` 5. 調用Javascript接口 在網站中添加如下代碼,用于調用Native界面的goToUrl方法。 ``` ``` 6. 打包apk 與基于WebView的應用一樣,需要添加INTERNET權限和打包apk。 總結: 以上兩種方式都可以將現有網站的鏈接制作成app,其中基于WebView的方式簡單易懂,但是沒有Native的功能;而Hybrid模式相對復雜,但可以實現更多相對復雜的功能。根據不同應用場景選擇合適的方式是很重要的。