从cordova插件启动android活动

从cordova插件启动android活动,第1张

概述我知道这可能是一个重复的问题,我已经尝试了堆栈的所有答案,但没有完整的答案.大多数答案只是给出了如何启动一个活动,但没有提示如何配置AndroidManifest文件中的活动以及保存活动布局和清单文件的位置.任何人都可以提供完整的代码结构来启动cordova插件的活动.解决方法:以下是

我知道这可能是一个重复的问题,我已经尝试了堆栈的所有答案,但没有完整的答案.

大多数答案只是给出了如何启动一个活动,但没有提示如何配置Android Manifest文件中的活动以及保存活动布局和清单文件的位置.

任何人都可以提供完整的代码结构来启动cordova插件的活动.

解决方法:

以下是从cordova插件启动活动的完整步骤

1.安装Plugman以创建插件

npm install -g plugman

2.使用plugman创建cordova插件

plugman create --name Pluginname --plugin_ID com.example.sample.plugin --plugin_version 0.0.1

N.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 androID

11.现在添加你的插件

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活动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1100643.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存