Native.js for Android封装一条通过JS语法直接调用Native Java接口通道,通过plus.android可调用几乎所有的系统API

方法:

对象:

回调方法:

权限:

5+功能模块(permissions)

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// ...</span>
<span style="color:#ffa0a0">"permissions"</span><span style="color:#ffffff">:{</span>
	<span style="color:#87ceeb">// ...</span>
	<span style="color:#ffa0a0">"Invocation"</span><span style="color:#ffffff">:</span> <span style="color:#ffffff">{</span>
		<span style="color:#ffa0a0">"description"</span><span style="color:#ffffff">:</span> <span style="color:#ffa0a0">"Native.js"</span>
	<span style="color:#ffffff">}</span>
<span style="color:#ffffff">}</span>
<span style="color:#ffffff">}</span>
			</code></span></span>

currentWebview

获取当前Webview窗口对象的native层实例对象

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">InstanceObject</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">currentWebview</span><span style="color:#ffffff">();</span>
				</code></span></span>

说明:

Android平台完整Java类名为android.webkit.Webview,完整API请参考Android开发文档

参数:

返回值:

InstanceObject : Webview窗口对象的native层android.webkit.Webview实例对象,如果调用方法失败,则返回null。

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 通过Webview原生窗口对象打开页面</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> loadURL</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> nwv</span><span style="color:#ffffff">=</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">currentWebview</span><span style="color:#ffffff">();</span><span style="color:#ffffff">
	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">invoke</span><span style="color:#ffffff">(</span><span style="color:#ffffff">nwv</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"loadUrl"</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"http://www.dcloud.io/"</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

newObject

创建实例对象

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">newObject</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> classname</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff">..</span><span style="color:#ffffff">args </span><span style="color:#ffffff">);</span>
				</code></span></span>

参数:

  • classname: ( String ) 必选 要创建实例对象的类名,使用"."分割命名空间

    如果指定的类名不存在,则创建对象失败,不会抛出异常。

  • args: ( Object ) 可选 创建实例对象的构造参数

    如果指定的构造参数类型不区配,则创建对象失败,不会抛出异常。

返回值:

InstanceObject : Android实例对象,如果创建对象失败则返回null。

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
	<span style="color:#87ceeb">// 直接创建android.content.Intent类的实例对象</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> intent </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">newObject</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"android.content.Intent"</span><span style="color:#ffffff">);</span>
				</code></span></span>

uni-app使用plus注意事项

getAttribute

获取对象(类对象/实例对象)的属性值

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">Object</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> obj</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name </span><span style="color:#ffffff">);</span>
				</code></span></span>

参数:

  • obj: IntanceObject | ClassObject | String ) 必选 要获取属性值的对象,也可以是类的名称

    如果obj为实例对象(InstanceObject),则获取的是实例的属性值; 如果obj为类对象(ClassObject),则获取的是类的静态属性值; 如果obj为字符串类型,其值必须是类的名称,则获取是类的静态属性值;

  • name: ( String ) 必选 要获取的属性名称

    如果指定的属性名称不存在,则获取属性失败,不会抛出异常。

返回值:

Object : 属性值对象,如果获取属性失败则返回null。

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 通过以下方法获取内存信息</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> getMemInfo</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Context</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"android.content.Context"</span><span style="color:#ffffff">);</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">ActivityManager</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"android.app.ActivityManager"</span><span style="color:#ffffff">);</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> mi </span><span style="color:#ffffff">=</span> <span style="color:#f0e68c"><strong>new</strong></span> <span style="color:#98fb98">ActivityManager</span><span style="color:#ffffff">.</span><span style="color:#98fb98">MemoryInfo</span><span style="color:#ffffff">();</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> activityService </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">runtimeMainActivity</span><span style="color:#ffffff">().</span><span style="color:#ffffff">getSystemService</span><span style="color:#ffffff">(</span><span style="color:#98fb98">Context</span><span style="color:#ffffff">.</span><span style="color:#ffffff">ACTIVITY_SERVICE</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
	activityService</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getMemoryInfo</span><span style="color:#ffffff">(</span><span style="color:#ffffff">mi</span><span style="color:#ffffff">);</span>
	<span style="color:#87ceeb">// 获取mi对象的availMem属性值</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> memoryInfo </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getAttribute</span><span style="color:#ffffff">(</span><span style="color:#ffffff">mi</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"availMem"</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

setAttribute

设置对象(类对象/实例对象)的属性值

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">setAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> obj</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> value </span><span style="color:#ffffff">);</span>
				</code></span></span>

参数:

  • obj: InstanceObject ) 必选 要设置属性值的对象,也可以是类的名称

    如果obj为实例对象(InstanceObject),则设置的是实例的属性值; 如果obj为类对象(ClassObject),则设置的是类的静态属性值; 如果obj为字符串类型,其值必须是类的名称,则设置是类的静态属性值;

  • name: ( String ) 必选 要设置的属性名称

    如果指定的属性名称不存在,则操作不生效,不会抛出异常。

  • value: ( Object ) 必选 要设置的属性值

    如果指定的属性值类型不区配,则操作不生效,不会抛出异常。

返回值:

void : 无

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 如Test类存在mCount属性,通过以下方法设置属性值</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testAttribute</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Test</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"io.dcloud.Test"</span><span style="color:#ffffff">);</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> test </span><span style="color:#ffffff">=</span> <span style="color:#f0e68c"><strong>new</strong></span> <span style="color:#98fb98">Test</span><span style="color:#ffffff">();</span>
	<span style="color:#87ceeb">// 设置test对象的count属性值</span><span style="color:#ffffff">
	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">setAttribute</span><span style="color:#ffffff">(</span><span style="color:#ffffff">test</span><span style="color:#ffffff">,</span><span style="color:#cd5c5c">10</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

implements

实现Interface的方法

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">Object</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#f0e68c"><strong>implements</strong></span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> obj </span><span style="color:#ffffff">);</span>
				</code></span></span>

参数:

  • name: ( String ) 必选 Interface的名称,也可以是自定的字符串名称

    如果name为自定的字符串名称,则自定义一个Interface;

  • obj: ( Object ) 必选 JSON对象类型,Interface实现方法的定义

    JSON对象中key值为Interface方法的名称;value值为Function。

返回值:

InstanceObject : Interface实例对象。

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 如存在接口NjsHelloEvent定义如下</span>
<span style="color:#87ceeb">//public interface NjsHelloEvent {</span>
<span style="color:#87ceeb">//	public void onEventInvoked( String name );</span>
<span style="color:#87ceeb">//}</span>
<span style="color:#87ceeb">// 实现接口“NjsHelloEvent”对象</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testImplements</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> hevent </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#f0e68c"><strong>implements</strong></span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"io.dcloud.NjsHelloEvent"</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">{</span>
		<span style="color:#ffa0a0">"onEventInvoked"</span><span style="color:#ffffff">:</span><span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff"> name </span><span style="color:#ffffff">){</span><span style="color:#ffffff">
			console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Invoked Object’s name: "</span><span style="color:#ffffff">+</span><span style="color:#ffffff">name </span><span style="color:#ffffff">);</span> <span style="color:#87ceeb">// 输出“Invoked Object’s name: Tester”</span>
		<span style="color:#ffffff">}</span>
	<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

importClass

导入Java类对象

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">ClassObject</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> classname </span><span style="color:#ffffff">);</span>
				</code></span></span>

说明:

导入类对象后,就可以通过.操作符直接调用对象(类对象/实例对象)的方法。 注意:导入类对象将会消耗较多的系统资源,通常不应该导入过多的类对象,可以使用plus.android.invoke()来调用未导入类实例对象的方法。

参数:

  • classname: ( String | InstanceObject ) 必选 要导入的Java类名或者实例对象,使用"."分割命名空间

    在类名中可以使用"*"来导入指定命名空间下的所有类对象; 如果指定的类名无效,则导入类对象失败。

返回值:

ClassObject : Java类对象,如果导入类对象失败则返回null。

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 导入android.content.Intent类对象</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testImport</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Intent</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"android.content.Intent"</span><span style="color:#ffffff">);</span>
	<span style="color:#87ceeb">// 导入后可以使用new方法创建类的实例对象</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> intent</span><span style="color:#ffffff">=</span><span style="color:#f0e68c"><strong>new</strong></span> <span style="color:#98fb98">Intent</span><span style="color:#ffffff">();</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

invoke

调用对象(类对象/实例对象)的方法

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">Object</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">invoke</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> obj</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff">...</span><span style="color:#ffffff"> args </span><span style="color:#ffffff">);</span>
				</code></span></span>

参数:

  • obj: InstanceObject | ClassObject | String ) 必选 调用方法所属的对象,也可以是类的名称

    如果obj为实例对象(InstanceObject),则调用的是实例的方法; 如果obj为类对象(ClassObject),则调用的是类的静态方法; 如果obj为字符串类型,其值必须是类的名称,则调用的是类的静态方法;

  • name: ( String ) 必选 要调用的方法名称

    如果指定的方法名称不存在,则调用方法失败,不会抛出异常。

  • args: ( Object ) 可选 调用方法的参数

    如果指定的参数数目或类型不区配,则调用方法失败,不会抛出异常。

返回值:

Object : 调用方法的返回值,如果调用方法失败,则返回undefined。

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 调用native API弹出提示框</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testInvoke</span><span style="color:#ffffff">(){</span>
  <span style="color:#87ceeb">// 由于Builder类是android.app.AlertDialog类的内部类,这里需要使用$符号分割</span>
  <span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> dlg </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">newObject</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"android.app.AlertDialog$Builder"</span><span style="color:#ffffff">,</span><span style="color:#ffffff">mainActivity</span><span style="color:#ffffff">);</span>
  <span style="color:#87ceeb">// 设置提示框标题</span><span style="color:#ffffff">
  plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">invoke</span><span style="color:#ffffff">(</span><span style="color:#ffffff">dlg</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"setTitle"</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"自定义标题"</span><span style="color:#ffffff">);</span>
  <span style="color:#87ceeb">// 设置提示框内容</span><span style="color:#ffffff">
  plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">invoke</span><span style="color:#ffffff">(</span><span style="color:#ffffff">dlg</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"setMessage"</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"使用NJS的原生弹出框,可自定义弹出框的标题、按钮"</span><span style="color:#ffffff">);</span>
  <span style="color:#87ceeb">// 设置提示框按钮</span><span style="color:#ffffff">
  plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">invoke</span><span style="color:#ffffff">(</span><span style="color:#ffffff">dlg</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"setPositiveButton"</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"确定(或者其他字符)"</span><span style="color:#ffffff">,</span><span style="color:#f0e68c"><strong>null</strong></span><span style="color:#ffffff">);</span>
  <span style="color:#87ceeb">// 显示提示框</span><span style="color:#ffffff">
  plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">invoke</span><span style="color:#ffffff">(</span><span style="color:#ffffff">dlg</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"show"</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

requestPermissions

请求权限

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestPermissions</span><span style="color:#ffffff">(</span><span style="color:#98fb98">Array</span><span style="color:#ffffff">[</span><span style="color:#98fb98">String</span><span style="color:#ffffff">]</span><span style="color:#ffffff"> permissions</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">AndroidSuccessCallback</span><span style="color:#ffffff"> successCb</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">AndroidErrorCallback</span><span style="color:#ffffff"> errorCB</span><span style="color:#ffffff">);</span>
				</code></span></span>

说明:

向系统请求权限,Android系统6+版本(API等级23+),并且必须设置targetSdkVersion>=23,参考:Android平台API等级配置 - minSdkVersion&targetSdkVersion - DCloud问答。 如果权限属于危险权限并且用户没有授权则会弹出系统提示框由用户授权确认,如果已经授权或被用户拒绝则返回结果。 授权结果在successCb回调参数中可获取。

参数:

  • permissions: ( Array[String] ) 可选 申请的权限列表

    权限列表参考Android官方列表https://developer.android.com/reference/android/Manifest.permission(需翻墙)。 注意:要申请的权限需在应用manifest.json的“模块权限配置”中勾选(保存后提交云端打包)。

  • successCb: AndroidSuccessCallback ) 可选 申请权限成功回调函数

    返回申请权限的结果,可能被用户允许 回调函数的参数event包含以下属性:

    • granted - Array[String]字符串数组,已获取权限列表;
    • deniedPresent - Array[String]字符串数据,已拒绝(临时)的权限列表;
    • deniedAlways - Array[String]字符串数据,永久拒绝的权限列表。

  • errorCB: AndroidErrorCallback ) 可选 申请权限失败回调函数

    通常传入参数错误时触发此回调。

返回值:

void : 无

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 申请定位权限</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> requestLocation</span><span style="color:#ffffff">(){</span><span style="color:#ffffff">
	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestPermissions</span><span style="color:#ffffff">([</span><span style="color:#ffa0a0">'android.permission.ACCESS_FINE_LOCATION'</span><span style="color:#ffffff">],</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span>
		<span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">deniedAlways</span><span style="color:#ffffff">.</span><span style="color:#ffffff">length</span><span style="color:#ffffff">></span><span style="color:#cd5c5c">0</span><span style="color:#ffffff">){</span>	<span style="color:#87ceeb">//权限被永久拒绝</span>
			<span style="color:#87ceeb">// 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启</span><span style="color:#ffffff">
			console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'Always Denied!!! '</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">deniedAlways</span><span style="color:#ffffff">.</span><span style="color:#ffffff">toString</span><span style="color:#ffffff">());</span>
		<span style="color:#ffffff">}</span>
		<span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">deniedPresent</span><span style="color:#ffffff">.</span><span style="color:#ffffff">length</span><span style="color:#ffffff">></span><span style="color:#cd5c5c">0</span><span style="color:#ffffff">){</span>	<span style="color:#87ceeb">//权限被临时拒绝</span>
			<span style="color:#87ceeb">// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限</span><span style="color:#ffffff">
			console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'Present Denied!!! '</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">deniedPresent</span><span style="color:#ffffff">.</span><span style="color:#ffffff">toString</span><span style="color:#ffffff">());</span>
		<span style="color:#ffffff">}</span>
		<span style="color:#f0e68c"><strong>if</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">granted</span><span style="color:#ffffff">.</span><span style="color:#ffffff">length</span><span style="color:#ffffff">></span><span style="color:#cd5c5c">0</span><span style="color:#ffffff">){</span>	<span style="color:#87ceeb">//权限被允许</span>
		    <span style="color:#87ceeb">//调用依赖获取定位权限的代码</span><span style="color:#ffffff">
			console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'Granted!!! '</span><span style="color:#ffffff">+</span><span style="color:#ffffff">e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">granted</span><span style="color:#ffffff">.</span><span style="color:#ffffff">toString</span><span style="color:#ffffff">());</span>
		<span style="color:#ffffff">}</span>
	<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">){</span><span style="color:#ffffff">
	    console</span><span style="color:#ffffff">.</span><span style="color:#ffffff">log</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">'Request Permissions error:'</span><span style="color:#ffffff">+</span><span style="color:#ffffff">JSON</span><span style="color:#ffffff">.</span><span style="color:#ffffff">stringify</span><span style="color:#ffffff">(</span><span style="color:#ffffff">e</span><span style="color:#ffffff">));</span>
	<span style="color:#ffffff">});</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

runtimeMainActivity

获取应用主Activity实例对象

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">InstanceObject</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">runtimeMainActivity</span><span style="color:#ffffff">();</span>
				</code></span></span>

说明:

Android平台完整Java类名为android.app.Activity,完整API请参考Android开发文档

参数:

返回值:

InstanceObject : 程序原生Java层主Activity实例对象。

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 获取应用主Activity实例对象</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> getMainActivity</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> main </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">runtimeMainActivity</span><span style="color:#ffffff">();</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

autoCollection

自动回收对象

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">autoCollection</span><span style="color:#ffffff">(</span><span style="color:#98fb98">InstanceObject</span><span style="color:#ffffff"> obj</span><span style="color:#ffffff">);</span>
				</code></span></span>

说明:

回收对象,设置自动回收原生对象(变量置空),应用在内存回收(GC)时自动释放对象占用的资源。

参数:

返回值:

void : 无

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 如Test类</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testAttribute</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Test</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"io.dcloud.Test"</span><span style="color:#ffffff">);</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> test </span><span style="color:#ffffff">=</span> <span style="color:#f0e68c"><strong>new</strong></span> <span style="color:#98fb98">Test</span><span style="color:#ffffff">();</span>
	<span style="color:#87ceeb">// 设置test对象自动回收</span><span style="color:#ffffff">
	plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">autoCollection</span><span style="color:#ffffff">(</span><span style="color:#ffffff">test</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

uni-app使用plus注意事项

ClassObject

Java类对象

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>interface</strong></span> <span style="color:#98fb98">ClassObject</span> <span style="color:#ffffff">{</span>
	<span style="color:#87ceeb">// ...</span>
	<span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> plusGetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name </span><span style="color:#ffffff">);</span>
	<span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> plusSetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> value </span><span style="color:#ffffff">);</span>
	<span style="color:#87ceeb">// ...</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

说明:

Java类对象,可通过其属性获取类的常量,可通过方法来操作类的静态变量和方法,也通过new方法来创建类的实例对象。 对于类的常量,则直接通过.后面跟随常量名称调用即可。

方法:

plusGetAttribute

获取Java类对象的静态属性

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">Object</span><span style="color:#ffffff"> clsobj</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusGetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name </span><span style="color:#ffffff">);</span>
						</code></span></span>

参数:

  • name: ( String ) 必选 要获取的静态属性名称

    如果指定的属性名称不存在,则返回null。

返回值:

Object : 静态属性实例对象

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 如Test类存在静态属性sName</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testAttribute</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Test</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"io.dcloud.Test"</span><span style="color:#ffffff">);</span>
	<span style="color:#87ceeb">// 获取io.dcloud.Test类的静态属性sName的值</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> name </span><span style="color:#ffffff">=</span> <span style="color:#98fb98">Test</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusGetAttribute</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"sName"</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
						</code></span></span>

uni-app使用plus注意事项

plusSetAttribute

设置Java类对象的静态属性

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> clsobj</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusSetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> value </span><span style="color:#ffffff">);</span>
						</code></span></span>

参数:

  • name: ( String ) 必选 要设置的静态属性名称

    如果指定的属性名称不存在,则操作不生效,不会抛出异常。

  • value: ( Object ) 必选 要设置的静态属性值

    如果指定的属性值类型不区配,则操作不生效,不会抛出异常。

返回值:

void : 无

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 如Test类存在静态属性sName</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testAttribute</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Test</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"io.dcloud.Test"</span><span style="color:#ffffff">);</span>
	<span style="color:#87ceeb">// 设置io.dcloud.Test类的静态属性sName的值</span>
	<span style="color:#98fb98">Test</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusSetAttribute</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"sName"</span><span style="color:#ffffff">,</span><span style="color:#ffa0a0">"New name"</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">};</span>
						</code></span></span>

uni-app使用plus注意事项

InstanceObject

Java实例对象

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>interface</strong></span> <span style="color:#98fb98">InstanceObject</span> <span style="color:#ffffff">{</span>
	<span style="color:#87ceeb">// ...</span>
	<span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> plusGetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name </span><span style="color:#ffffff">);</span>
	<span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> plusSetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> value </span><span style="color:#ffffff">);</span>
	<span style="color:#87ceeb">// ...</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

说明:

Java实例对象,可通过其方法来操作实例的变量和方法。 注意:必须通过plusGetAttribute()方法读取实例对象的属性值,通过plusSetAttribute()方法设置实例对象的属性值。

方法:

plusGetAttribute

获取Java实例对象的属性

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">Object</span><span style="color:#ffffff"> insobj</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusGetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name </span><span style="color:#ffffff">);</span>
						</code></span></span>

参数:

  • name: ( String ) 必选 实例属性的名称

    如果指定的属性名称不存在,则返回null。

返回值:

Object : 属性的值

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 获取实例对象的属性</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testAttribute</span><span style="color:#ffffff">(){</span>
	<span style="color:#87ceeb">// 获取手机内存信息</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Context</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"android.content.Context"</span><span style="color:#ffffff">);</span>
    <span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">ActivityManager</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"android.app.ActivityManager"</span><span style="color:#ffffff">);</span>
    <span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> mi </span><span style="color:#ffffff">=</span> <span style="color:#f0e68c"><strong>new</strong></span> <span style="color:#98fb98">ActivityManager</span><span style="color:#ffffff">.</span><span style="color:#98fb98">MemoryInfo</span><span style="color:#ffffff">();</span>
    <span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> activityService </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">runtimeMainActivity</span><span style="color:#ffffff">().</span><span style="color:#ffffff">getSystemService</span><span style="color:#ffffff">(</span><span style="color:#98fb98">Context</span><span style="color:#ffffff">.</span><span style="color:#ffffff">ACTIVITY_SERVICE</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
    activityService</span><span style="color:#ffffff">.</span><span style="color:#ffffff">getMemoryInfo</span><span style="color:#ffffff">(</span><span style="color:#ffffff">mi</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
    memoryInfo </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> mi</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusGetAttribute</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"availMem"</span><span style="color:#ffffff">);</span> <span style="color:#87ceeb">// 获取mi对象的availMem属性值</span>
<span style="color:#ffffff">};</span>
						</code></span></span>

uni-app使用plus注意事项

plusSetAttribute

设置Java实例对象的属性

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> insobj</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusSetAttribute</span><span style="color:#ffffff">(</span> <span style="color:#98fb98">String</span><span style="color:#ffffff"> name</span><span style="color:#ffffff">,</span> <span style="color:#98fb98">Object</span><span style="color:#ffffff"> value </span><span style="color:#ffffff">);</span>
						</code></span></span>

参数:

  • name: ( String ) 必选 要设置的属性名称

    如果指定的属性名称不存在,则操作不生效,不会抛出异常。

  • value: ( Object ) 必选 要设置的属性值

    如果指定的属性值类型不区配,则操作不生效,不会抛出异常。

返回值:

void : 无

示例:

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#87ceeb">// 如Test类存在mCount属性</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> testAttribute</span><span style="color:#ffffff">(){</span>
	<span style="color:#f0e68c"><strong>var</strong></span> <span style="color:#98fb98">Test</span> <span style="color:#ffffff">=</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">android</span><span style="color:#ffffff">.</span><span style="color:#ffffff">importClass</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"io.dcloud.Test"</span><span style="color:#ffffff">);</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> test </span><span style="color:#ffffff">=</span> <span style="color:#f0e68c"><strong>new</strong></span> <span style="color:#98fb98">Test</span><span style="color:#ffffff">();</span>
	<span style="color:#87ceeb">// 设置test对象的count属性值</span><span style="color:#ffffff">
	test</span><span style="color:#ffffff">.</span><span style="color:#ffffff">plusSetAttribute</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"mCount"</span><span style="color:#ffffff">,</span><span style="color:#cd5c5c">10</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
						</code></span></span>

uni-app使用plus注意事项

AndroidSuccessCallback

成功回调函数

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> onSuccess</span><span style="color:#ffffff">(</span><span style="color:#f0e68c"><strong>event</strong></span><span style="color:#ffffff">){</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

说明:

不同接口触发的成功回调参数event包含的属性存在差异,具体参考对应的接口描述说明。

参数:

  • event: ( Object ) 必选 回调参数

    回调参数包含的属性由调用接口决定,具体参考对应的接口描述说明。

返回值:

void : 无

AndroidErrorCallback

错误回调函数

<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> onError</span><span style="color:#ffffff">(</span><span style="color:#98fb98">Exception</span><span style="color:#ffffff"> error</span><span style="color:#ffffff">){</span>
	<span style="color:#87ceeb">// Handle error</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> code </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> error</span><span style="color:#ffffff">.</span><span style="color:#ffffff">code</span><span style="color:#ffffff">;</span> <span style="color:#87ceeb">// 错误编码</span>
	<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> message </span><span style="color:#ffffff">=</span><span style="color:#ffffff"> error</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message</span><span style="color:#ffffff">;</span> <span style="color:#87ceeb">// 错误描述信息</span>
<span style="color:#ffffff">}</span>
				</code></span></span>

参数:

  • error: ( Exception ) 必选 获取加速度操作的错误信息

    可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。

返回值:

void : 无

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值