Cordova 呼叫android原生Activity (android)

2020-09-24 14:00:16

Cordova 呼叫android原生Activity

  特別注意 android 專案的包名 必須為 com.example.hello,否則編譯不會通過。

1.準備一個建立好的外掛

Cordova 自定義外掛

檔案結構

cordova-plugin-activity
     |-- src // 平臺原始碼
         |-- android // Android 平臺原始碼
             |-- activity // activity java 程式碼
                  |-- FirstActivity.java //要新增加java程式碼
             |-- layout // activity layout 佈局程式碼
                  |-- activity_first.xml //要新新增的xml
             |-- FirstPlugin.java // 外掛 主類
     |-- www // 呼叫原生的js程式碼 
     |-- package.json // 
     |-- plugin.xml // 外掛組態檔  

2.建立一個 FirstActivity.java

package cordova.plugin.first.plugin.activity;

import android.app.Activity;
import android.os.Bundle;

import com.example.hello.R;

public class FirstActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
    }
}

3.建立一個 activity_first.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="cordova.plugin.first.plugin.activity.FirstActivity">

    <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="這是一個新的Activity"
            tools:layout_editor_absoluteX="152dp"
            tools:layout_editor_absoluteY="180dp"
            tools:ignore="MissingConstraints" />

</LinearLayout>

4.修改 plugin.xml

<?xml version='1.0' encoding='utf-8'?>
<plugin id="cordova-plugin-activity" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0"
        xmlns:android="http://schemas.android.com/apk/res/android">
    <name>FirstPlugin</name>
    <js-module name="FirstPlugin" src="www/FirstPlugin.js">
        <clobbers target="FirstPlugin"/>
    </js-module>
    <platform name="android">
        <config-file parent="/*" target="res/xml/config.xml">
            <feature name="FirstPlugin">
                <param name="android-package" value="cordova.plugin.first.plugin.FirstPlugin"/>
            </feature>
        </config-file>
        <!--新增程式碼1 start-->
        <config-file target="AndroidManifest.xml" parent="/manifest/application">
            <activity android:name="cordova.plugin.first.plugin.activity.FirstActivity"></activity>
        </config-file>
        <!--新增程式碼1 end -->
        <config-file parent="/*" target="AndroidManifest.xml"></config-file>
        <source-file src="src/android/FirstPlugin.java" target-dir="src/cordova/plugin/first/plugin"/>
        <!--新增程式碼2 start-->
        <source-file src="src/android/activity/FirstActivity.java" target-dir="src/cordova/plugin/first/plugin/activity"/>
        <resource-file src="src/android/layout/activity_first.xml" target="res/layout/activity_first.xml"/>
        <!--新增程式碼2 end -->

    </platform>
</plugin>

5.新增外掛

 // 到基於cordova的專案中,輸入以下命令
 cordova plugin add [外掛路徑]
 // 也可以安裝我的範例外掛
 cordova plugin add https://github.com/waliu/cordova-plugin-study/tree/master/cordova-plugin-activity

6.js 呼叫範例

        try {
            // console.log(window.FirstPlugin);
            window.FirstPlugin.testFirstPlugin((res)=>{
                console.log(res);
            },(error)=>{

            },null);
        } catch (e) {
            console.log(e);
            console.log("請在真機或者模擬器執行");
        }

7.外掛最終效果

 

8.資源下載

js呼叫原始碼

外掛原始碼

測試apk下載

 

聯絡我:QQ群 390736068