将现有网站的链接制作成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方法。 ``` Click me ``` 6. 打包apk 与基于WebView的应用一样,需要添加INTERNET权限和打包apk。 总结: 以上两种方式都可以将现有网站的链接制作成app,其中基于WebView的方式简单易懂,但是没有Native的功能;而Hybrid模式相对复杂,但可以实现更多相对复杂的功能。根据不同应用场景选择合适的方式是很重要的。