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.
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ść.
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));
}
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