aha*_*s88 15 phonegap-plugins cordova
我正在寻找适用于Phonegap 3.x的phonegap插件.我需要它在Android和iOS中工作.如果两个插件都有1个插件会更好,但是如果我有两个单独的插件可以使用就可以了.如果我可以使用以下命令安装它也是更好的选择:
phonegap local plugin add
Run Code Online (Sandbox Code Playgroud)
那里有这样的插件吗?或者是否有关于如何升级现有短信插件以使用phonegap 3.0的说明?
编辑
我分享了一个2.9的插件回购,我试图让它在phonegap 3.x(https://github.com/aharris88/phonegap-sms-plugin)中工作,到目前为止,我可以把它拉进去我的phonegap项目与命令
phonegap local plugin add https://github.com/aharris88/phonegap-sms-plugin
Run Code Online (Sandbox Code Playgroud)
并且它正确地将所需的权限放在AndroidManifest.xml中,并将该功能放在res/xml/config.xml中,但是当我在手机上安装它时,并没有说它需要发送文本的权限,我不喜欢从此代码中获取任何成功或错误消息:
var number = $('#number').val();
var message = $('#text').val();
alert("Send text to "+number+" with message: "+message);
SmsPlugin.prototype.send(number, message, '',
function () {
alert('Message sent successfully');
},
function (e) {
alert('Message Failed:' + e);
}
);
Run Code Online (Sandbox Code Playgroud)
aha*_*s88 11
调试它的最佳方法是使用ADT(Android开发者工具).有很多小事错了.这篇文章是一个非常有用的资源: http //devgirl.org/2013/09/17/how-to-write-a-phonegap-3-0-plugin-for-android/
这是sms.java代码:
package com.adamwadeharris.sms;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.PendingIntent;
import android.content.Intent;
import android.telephony.SmsManager;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
public class Sms extends CordovaPlugin {
public final String ACTION_SEND_SMS = "send";
@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
if (action.equals(ACTION_SEND_SMS)) {
try {
String phoneNumber = args.getString(0);
String message = args.getString(1);
String method = args.getString(2);
if(method.equalsIgnoreCase("INTENT")){
invokeSMSIntent(phoneNumber, message);
callbackContext.sendPluginResult(new PluginResult( PluginResult.Status.NO_RESULT));
} else{
send(phoneNumber, message);
}
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
return true;
}
catch (JSONException ex) {
callbackContext.sendPluginResult(new PluginResult( PluginResult.Status.JSON_EXCEPTION));
}
}
return false;
}
private void invokeSMSIntent(String phoneNumber, String message) {
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", message);
sendIntent.putExtra("address", phoneNumber);
sendIntent.setType("vnd.android-dir/mms-sms");
this.cordova.getActivity().startActivity(sendIntent);
}
private void send(String phoneNumber, String message) {
SmsManager manager = SmsManager.getDefault();
PendingIntent sentIntent = PendingIntent.getActivity(this.cordova.getActivity(), 0, new Intent(), 0);
manager.sendTextMessage(phoneNumber, null, message, sentIntent, null);
}
}
Run Code Online (Sandbox Code Playgroud)
这是sms.js代码:
var sms = {
send: function(phone, message, method, successCallback, failureCallback) {
cordova.exec(
successCallback,
failureCallback,
'Sms',
'send',
[phone, message, method]
);
}
}
module.exports = sms;
Run Code Online (Sandbox Code Playgroud)
这是plugin.xml:
<plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
id="com.adamwadeharris.sms"
version="0.1.0">
<name>Sms</name>
<description>Cordova SMS Send Plugin</description>
<license>MIT</license>
<keywords>cordova,phonegap,sms</keywords>
<js-module src="www/sms.js" name="Sms">
<clobbers target="window.sms" />
</js-module>
<!-- android -->
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="Sms">
<param name="android-package" value="com.adamwadeharris.sms.Sms"/>
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.SEND_SMS" />
</config-file>
<source-file src="src/android/Sms.java" target-dir="src/com/adamwadeharris/sms" />
</platform>
</plugin>
Run Code Online (Sandbox Code Playgroud)
编辑 此外,我有github上的插件:https://github.com/aharris88/phonegap-sms-plugin
编辑 此插件现已转移到:https: //github.com/cordova-sms/cordova-sms-plugin
| 归档时间: |
|
| 查看次数: |
12487 次 |
| 最近记录: |