混合APP開發的套路(四):在html頁面中開啟專案中的Activity
前面我們學習了android和 網頁(javascript)的互動,互相呼叫函式。
今天我們要來學習,如何在html頁面中開啟安卓專案中的Activity。
1、準備
做一個登入介面。
新建佈局檔案login.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用者名稱:"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="請輸入使用者名稱"
android:id="@+id/login_username"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密碼:"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:text="請輸入密碼"
android:ems="10"
android:id="@+id/login_pwd"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登入"
android:id="@+id/login_btn"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
新建登入介面的Activity檔案LoginActivity.java
:
package com.example.dev.firtapp;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 設定佈局
this.setContentView(R.layout.login);
}
}
2、需要註冊,在全域性配置檔案裡
AndroidManifest.xml
加入下面內容:
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
3、來到webView的Activity,處理網頁介面邏輯。
WebViewActivity.java:
public class WebViewActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.webview); // 設定layout
// 建立一個webView元件
final WebView webView = new WebView(this);
setContentView(webView);
// 給webView新增一個js介面
webView.addJavascriptInterface(this,"www"); // "www"名字可隨意
// webView相關設定
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
// 載入本地html
AssetManager assetManager = this.getAssets();
try {
InputStream inputStream = assetManager.open("index.html");
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
// 讀取html內容
String htmlContent = new String(buffer,"utf-8");
inputStream.close();
// 載入到webView中
webView.loadData(htmlContent,"text/html","utf-8");
} catch (IOException e) {
e.printStackTrace();
}
}
@JavascriptInterface
public void openLogin(){ // 開啟登入框
this.runOnUiThread(new Runnable() {
@Override
public void run() {
Intent intent = new Intent();
// 當前是WebViewActivity類,需要開啟的是LoginActivity類
intent.setClass(WebViewActivity.this, LoginActivity.class);
startActivity(intent);
}
});
}
}
可以看出:我們載入了index.html這個網頁,並且寫了一個javascript的介面方法openLogin()
,該方法裡實現了開啟LoginActivity的業務。
4、在index.html裡
<script>
function login(){
// window.www.openLogin();
www.openLogin();
}
</script>
<button onclick="login()"> login</button>
相關文章
- 京東在html5頁面中開啟本地app的解決方案HTMLAPP
- 在html頁面中判斷本地app是否安裝並開啟HTMLAPP
- Flutter與Native的混合開發之--Andriod專案呼叫Flutter專案頁面-初探Flutter
- Spring在開發專案中起的作用Spring
- 在開發專案中進行有效的專案管理(轉)專案管理
- SSH專案開發中,將jsp頁面放在WEB-INF的原因解析JSWeb
- 在 Laradock 中開發 Vue 專案Vue
- 基於Html對父頁面開啟子頁面Dialog()的使用HTML
- Vue中在新視窗開啟頁面 及 Vue-routerVue
- 軟體專案管理的研究及在專案開發中的應用專案管理
- Cordova+vue 混合app開發(一)建立Cordova專案VueAPP
- 原生App專案整合flutter混合開發詳細指南APPFlutter
- 測試驅動開發在專案中的實踐
- Docker在PHP專案開發環境中的應用DockerPHP開發環境
- 在applet程式中要開啟html網頁是否需要一些系統配置?APPHTML網頁
- eclipse在search的時候,通過search開啟的頁面會覆蓋之前開啟的頁面Eclipse
- C#防止WebBrowser在新視窗中開啟連結頁面C#Web
- Android中Activity的四種啟動方式Android
- 在自己的 app 中使用 Sarfari 開發工具除錯 Web 頁面APP除錯Web
- 用H5頁面開啟APPH5APP
- HTML5在移動開發中的現狀HTML移動開發
- 在開發過程中終止一個專案的想法
- 在瀑布式專案中實現敏捷開發敏捷
- 在blender中開啟pmx檔案
- ASP.NET中Url重寫後,打不開真正的Html頁面ASP.NETHTML
- Android開發教程 - 使用Data Binding(三)在Activity中的使用Android
- 怎麼在tomcat支援的網頁中開啟pptTomcat網頁
- Android中的Activity四種啟動模式(launchMode)Android模式
- 軟體開發中的專案管理(轉)專案管理
- Halo 開源專案學習(四):釋出文章與頁面
- 如何將一個HTML頁面巢狀在另一個頁面中HTML巢狀
- 現有Android專案中整合Flutter/Flutter混合開發實戰(一)AndroidFlutter
- 【Android】在Activity頁面中如何實現Fragment資料的緩載入AndroidFragment
- H5頁面開啟app的一些思考H5APP
- 00 在Windows環境中開發Cordova專案的準備工作Windows
- 在Flutter專案中開發IOS桌面元件(WidgetExtension)FlutteriOS元件
- webpack多頁面入口生產專案開發配置Web
- 零頁面機制在缺頁中斷中的作用