将现有网站的链接制作成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模式相对复杂,但可以实现更多相对复杂的功能。根据不同应用场景选择合适的方式是很重要的。