我知道這可能是一個重複的問題,我嘗試了所有來自堆棧的答案,但沒有完整的答案。從cordova插件啓動android活動
大多數的答案只是給出如何啓動一個活動,但沒有提示如何配置Android Manifest文件中的活動以及保存活動佈局和清單文件的位置。
任何人都可以給一個完整的代碼結構來從cordova插件開始一個活動。
我知道這可能是一個重複的問題,我嘗試了所有來自堆棧的答案,但沒有完整的答案。從cordova插件啓動android活動
大多數的答案只是給出如何啓動一個活動,但沒有提示如何配置Android Manifest文件中的活動以及保存活動佈局和清單文件的位置。
任何人都可以給一個完整的代碼結構來從cordova插件開始一個活動。
下面是完整的步驟從科爾多瓦插件
1.啓動活動安裝Plugman創建插件
npm install -g plugman
2.創建科爾多瓦使用plugman
插件plugman create --name PluginName --plugin_id com.example.sample.plugin --plugin_version 0.0.1
注:插件ID從不啓動與大寫
現在將創建PluginName目錄。插件結構將
PluginName/
| - plugin.xml的
| - SRC/
| - WWW/PluginName.js
3.添加android平臺插件
plugman platform add --platform_name android
現在插件結構將
PluginName/
| - plugin.xml的
| - SRC /安卓/ PluginName.java
| - WWW/PluginName.js
4.現在創建一個java文件名爲NewActivity.java在的src /安卓 diretory
該活動將利用我們的插件來顯示。
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.現在創建佈局文件activity_new。XML在的src /安卓 diretory
這是我們新的活動
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.現在編輯PluginName.java佈局文件src/android
現在我們需要處理請求並開始我們的新活動。
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.現在WWW目錄編輯PluginName.js
現在,創造新的方法來調用,開始我們新的活動。
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.現在編輯的plugin.xml
現在,我們需要指定我們的文件,插件,並在科爾多瓦AndroidManifest.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.現在創建一個cordova項目
cordova create CordovaProject com.example.sample.cordovaproject "Cordova App"
10.添加Android系統平臺,您科爾多瓦項目
cordova platform add android
11.現在添加插件
cordova plugin add your-plugin-local-path
eg: cordova plugin add "C:\PluginName"
12.添加一個按鈕來指數.html in WWW目錄
的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.添加單擊處理新按鈕指數。JS在WWW/JS目錄
當點擊我們的按鈕,我們將調用我們的插件的方法來開始我們的新的活動
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。現在在android手機上運行這個應用程序
cordova run android
如果所有這些步驟都成功,當我們點擊新建活動按鈕,我們的新活動將顯示出來。
嗨,你可以使用這個插件
cordova plugin add sevensky-cordova-plugin-intent
用法:
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));
}
你在哪裏得到 「SmartHomePlugin」 – HKumar
@HKumar對不起,這是一個錯字錯誤。它應該是PluginName。謝謝。 –
您能指導我如何將成功和回調方法添加到此活動中 – HKumar