Rozpocznij działalność android z cordova plugin

Wiem, że to pytanie jest duplikatem, próbowałem wszystkich odpowiedzi ze stosu, ale non ma pełną odpowiedź.

Większość odpowiedzi podaje tylko, jak rozpocząć aktywność, ale nie podpowiada, jak skonfigurować aktywność w pliku manifestu Androida i gdzie zapisać układ aktywności i plik manifestu.

Czy ktoś może podać pełną strukturę kodu, aby rozpocząć działalność z cordova plugin.

Author: Ijas Ahamed N, 2016-11-02

2 answers

Oto pełne kroki, aby rozpocząć działalność z wtyczki cordova

1. Install Plugman to create plugin

npm install -g plugman

2. Tworzenie wtyczki cordova za pomocą plugman

plugman create --name PluginName --plugin_id com.example.sample.plugin --plugin_version 0.0.1

Uwaga: identyfikator wtyczki nigdy nie zaczyna się od wielkich liter

Teraz zostanie utworzony katalog PluginName. Struktura wtyczki będzie

PluginName /

/ - plugin.xml

|- src /

|- www / PluginName.js

3. Dodaj platformę android do wtyczki

plugman platform add --platform_name android

Teraz struktura wtyczki będzie

PluginName /

/ - plugin.xml

/ - src / android / PluginName.java

/ - www / PluginName.js

4. Teraz Utwórz plik java o nazwie NewActivity.java w katalogu src/android

Ta aktywność zostanie pokazana za pomocą naszego plugin.

New activity.java

package com.example.sample.plugin;

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

public class NewActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String package_name = getApplication().getPackageName();
        setContentView(getApplication().getResources().getIdentifier("activity_new", "layout", package_name));
    }
}

5. Teraz Utwórz plik układu activity_new.xml w katalogu src/android

To jest plik układu dla naszej nowej aktywności

Activity_new.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    tools:context="com.example.sample.plugin.NewActivity">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="New Activity"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="77dp" />
</RelativeLayout>

6. Teraz edytuj nazwę wtyczki.java in src / android

Teraz musimy obsłużyć żądanie i rozpocząć naszą nową aktywność.

Nazwa wtyczki.java

package com.example.sample.plugin;

import android.content.Context;
import android.content.Intent;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaWebView;
import org.apache.cordova.CordovaInterface;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class PluginName extends CordovaPlugin {

    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
        super.initialize(cordova, webView);
    }

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        Context context = cordova.getActivity().getApplicationContext();
        if(action.equals("new_activity")) {
            this.openNewActivity(context);
            return true;
        }
        return false;
    }

    private void openNewActivity(Context context) {
        Intent intent = new Intent(context, NewActivity.class);
        this.cordova.getActivity().startActivity(intent);
    }
}

7. Teraz edytuj nazwę wtyczki.js w www katalog

Teraz Utwórz nową metodę wywołania, aby rozpocząć naszą nową aktywność.

var exec = require('cordova/exec');

function plugin() {

}

plugin.prototype.new_activity = function() {
    exec(function(res){}, function(err){}, "PluginName", "new_activity", []);
}

module.exports = new plugin();

8. Teraz edycja wtyczki.xml

Teraz musimy określić nasze pliki do wtyczki i dokonać niezbędnych zmian w Cordova AndroidManifest.plik xml

Plugin.xml

<?xml version='1.0' encoding='utf-8'?>
<plugin id="com.example.sample.plugin" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <name>PluginName</name>
    <js-module name="PluginName" src="www/PluginName.js">
        <clobbers target="PluginName" />
    </js-module>
    <platform name="android">
        <config-file parent="/*" target="res/xml/config.xml">
            <feature name="PluginName">
                <param name="android-package" value="com.example.sample.plugin.PluginName" />
            </feature>
        </config-file>
        <config-file target="AndroidManifest.xml" parent="/manifest/application">
            <activity android:label="New Activity" android:name="com.example.sample.plugin.NewActivity"></activity>
        </config-file>
        <config-file parent="/*" target="AndroidManifest.xml"></config-file>
        <source-file src="src/android/PluginName.java" target-dir="src/com/example/sample/plugin" />
        <source-file src="src/android/NewActivity.java" target-dir="src/com/example/sample/plugin" />
        <source-file src="src/android/activity_new.xml" target-dir="res/layout"/>
    </platform>
</plugin>

9. Teraz Utwórz cordova projekt

cordova create CordovaProject com.example.sample.cordovaproject "Cordova App"

10. Dodaj platformę android do projektu cordova

cordova platform add android

11. Teraz dodaj swój plugin

cordova plugin add your-plugin-local-path
eg: cordova plugin add "C:\PluginName"

12. Dodaj przycisk do indeksu .html w www katalog

Indeks.html

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Hello World</title>
    </head>
    <body>
        <div class="app">
            <h1>Apache Cordova</h1>
            <div id="deviceready" class="blink">
                <p class="event listening">Connecting to Device</p>
                <p class="event received">Device is Ready</p>
            </div>
            <button id = "new_activity">New Activity</button>
        </div>
        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>

13. Dodaj obsługę kliknięć dla nowego przycisku w indeksie .js w www/js katalog

Gdy nasz przycisk zostanie kliknięty, wywołamy naszą metodę wtyczki, aby rozpocząć nasza nowa działalność

Indeks.js

var app = {
    initialize: function() {
        this.bindEvents();
    },
    bindEvents: function() {
        document.addEventListener('deviceready', this.onDeviceReady, false);
    },
    onDeviceReady: function() {
        app.receivedEvent('deviceready');
    },
    receivedEvent: function(id) {
        var parentElement = document.getElementById(id);
        var listeningElement = parentElement.querySelector('.listening');
        var receivedElement = parentElement.querySelector('.received');

        listeningElement.setAttribute('style', 'display:none;');
        receivedElement.setAttribute('style', 'display:block;');

        console.log('Received Event: ' + id);
        document.getElementById("new_activity").addEventListener("click", new_activity);
    }
};

app.initialize();

function new_activity() {
    PluginName.new_activity();
}

14. Teraz uruchom tę aplikację w telefonie z Androidem

cordova run android

Jeśli wszystkie te kroki zakończą się sukcesem i po kliknięciu przycisku Nowa aktywność , pojawi się nasza nowa aktywność.

 50
Author: Ijas Ahamed N,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-25 20:25:13

Cześć możesz użyć tej wtyczki

cordova plugin add sevensky-cordova-plugin-intent

Użycie:

    document.getElementById("btn_device_name").addEventListener("click", test);

    function test() {
        var obj = new Object();
        obj.name = "Ahmad"; //bundle string extra 1 string
        obj.family = "Aghazadeh"; //bundle string extra 2
        intentPlugin.startActivity("com.sevensky.test", "TestActivity", JSON.stringify(obj));
    }
 1
Author: Ahmad Aghazadeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-03 17:18:30