2016-11-02 2 views
1

Ich weiß, dass dies eine doppelte Frage ist, habe ich alle Antworten aus dem Stapel versucht, aber nicht hat eine vollständige Antwort.Starten Sie Android-Aktivität von Cordova Plugin

Die meisten Antworten zeigen nur, wie Sie eine Aktivität starten, aber keine Hinweise, wie Sie die Aktivität in der Android Manifest-Datei konfigurieren und wo Sie das Aktivitätslayout und die Manifestdatei speichern können.

Kann jemand bitte eine vollständige Code-Struktur geben, um eine Aktivität von Cordova Plugin zu starten.

Antwort

15

Dies ist die komplette Schritte, um eine Aktivität von einem cordova Plugin

1. Installieren Plugman zu starten Plugin

npm install -g plugman 

2. Erstellen cordova erstellen Plugin plugman

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

NB: Plugin-ID startet nie mit Großbuchstaben

Jetzt wird PluginName-Verzeichnis erstellt. Plugin-Struktur wird

Plugin/

| - plugin.xml

| - src/

| - www/PluginName.js

3. Hinzufügen android platform to plugin

plugman platform add --platform_name android 

Jetzt wird Plugin-Struktur sein

Plugin/

| - plugin.xml

| - src/android/PluginName.java

| - www/PluginName.js

4. Erstellen Sie nun ein Java Datei mit dem Namen NewActivity.java in src/android Diretory

Diese Aktivität wird unsere Plugin gezeigt werden.

NewActivity.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. Jetzt Layout-Datei activity_new erstellen.xml in src/android Diretory

Dies ist die Layout-Datei für unsere neue Aktivität

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. Jetzt PluginName.java bearbeiten in src/android

Nun müssen wir die Anfrage bearbeiten und unsere neue Aktivität starten.

PluginName.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. Jetzt PluginName.js in www Verzeichnis

Jetzt neue Methode erstellen können Sie unsere neue Tätigkeit beginnen bearbeiten.

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. Jetzt bearbeiten plugin.xml

Jetzt müssen wir unsere Dateien angeben, um Plugin und die notwendigen Änderungen in cordova AndroidManifest.xml Datei

plugin.xml

zu machen
<?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. Erstellen Sie nun ein Cordova-Projekt

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

10. In Android-Plattform zu Ihrem cordova Projekt

cordova platform add android 

11. Jetzt Ihr Plugin hinzufügen

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

12. Fügen Sie eine Schaltfläche zu Index .html in www Verzeichnis

index.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. Klicken Sie auf Hinzufügen Handler für neue Schaltfläche in Index.js in www/js Verzeichnis

Wenn unsere Schaltfläche geklickt wird, werden wir unser Plugin-Methode können Sie unsere neue Aktivität

index.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 zu starten. Jetzt führen Sie diese App in Android-Handy

cordova run android 

Wenn alle diese Schritte erfolgreich sind und wir auf Schaltfläche Neue Aktivität klicken, wird unsere neue Aktivität angezeigt.

+0

wo hast du "SmartHomePlugin" – HKumar

+0

@HKumar leid, es war ein Tippfehler Fehler. Es sollte PluginName sein. Vielen Dank. –

+0

Können Sie mir beibringen, wie Sie dieser Aktivität eine Erfolgs- und Rückrufmethode hinzufügen? – HKumar

0

Hallo können Sie dieses Plugin

cordova plugin add sevensky-cordova-plugin-intent 

Nutzungs verwenden:

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)); 
    }