
我知道这可能是一个重复的问题,我已经尝试了堆栈的所有答案,但没有完整的答案.
大多数答案只是给出了如何启动一个活动,但没有提示如何配置Android Manifest文件中的活动以及保存活动布局和清单文件的位置.
任何人都可以提供完整的代码结构来启动cordova插件的活动.
解决方法:
以下是从cordova插件启动活动的完整步骤
1.安装Plugman以创建插件
npm install -g plugman2.使用plugman创建cordova插件
plugman create --name Pluginname --plugin_ID com.example.sample.plugin --plugin_version 0.0.1N.B:插件ID永远不会以大写字母开头
现在将创建Pluginname目录.插件结构将是
Pluginname/
|- plugin.xml
|- src/
|- www/Pluginname.Js
3.将androID平台添加到插件中
plugman platform add --platform_name androID现在插件结构将是
Pluginname/
|- plugin.xml
|- src/androID/Pluginname.java
|- www/Pluginname.Js
4.现在在src / androID目录中创建一个名为NewActivity.java的java文件
此活动将使用我们的插件显示.
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.现在在src / androID目录中创建布局文件activity_new.xml
这是我们新活动的布局文件
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.现在在src / androID中编辑Pluginname.java
现在我们需要处理请求并开始我们的新活动.
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
现在我们需要指定我们的文件插件并在cordova 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项目中
cordova platform add androID11.现在添加你的插件
cordova plugin add your-plugin-local-patheg: cordova plugin add "C:\Pluginname"12.在www目录中为index.HTML添加一个按钮
的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 > <h1>Apache Cordova</h1> <div ID="deviceready" > <p >Connecting to Device</p> <p >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.在www / Js目录的index.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插件启动android活动全部内容,希望文章能够帮你解决从cordova插件启动android活动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)