2013-09-12 2 views
15

Я ищу плагины для телефонной связи, которые будут работать с Phonegap 3.x. Мне нужно, чтобы он работал в Android и iOS. Было бы предпочтительнее, если бы был один плагин для обоих, но это нормально, если есть 2 отдельных плагина, которые я могу использовать. Также желательно, чтобы я мог установить его с помощью команды:Плагин SMS Phonegap 3.0 для Android и iOS

phonegap local plugin add 

Есть ли такой плагин там? Или есть инструкции по обновлению существующего sms-плагина для работы с телефонной связью 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 

и правильно ставит права, необходимые в AndroidManifest.xml и помещает функцию в Рез/XML/config.xml, но когда я установить его на моем телефоне это не скажем, ему нужно разрешение на отправку текстов, и я не получаю никакого успеха или сообщения об ошибке f rom этот код:

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); 
    } 
); 

ответ

11

Лучшим способом отладки было использование ADT (Android Developer Tools). Было много мелочей. Эта статья была очень полезный ресурс: 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); 
    } 
} 

Вот код sms.js:

var sms = { 
    send: function(phone, message, method, successCallback, failureCallback) { 
     cordova.exec(
      successCallback, 
      failureCallback, 
      'Sms', 
      'send', 
      [phone, message, method] 
     ); 
    } 
} 

module.exports = sms; 

А вот 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> 

Edit Кроме того, у меня есть плагин доступны на GitHub: https://github.com/aharris88/phonegap-sms-plugin

Edit Этот плагин теперь переехал: https://github.com/cordova-sms/cordova-sms-plugin

+0

Привет, я получаю «ошибку JSON», пожалуйста, пусть я знаю, почему? –

+0

Вы используете плагин, который я написал? Вероятно, вы должны отправить вопрос с более подробной информацией или задать новый вопрос о stackoverflow. – aharris88

+0

Я выполнил указанные шаги. Я хочу сохранить намерение пустым, поэтому я использовал var intent = ""; sms.send (число, сообщение, намерение, успех, ошибка); Я получаю предупреждение, но я не получил никакого ответного сообщения, а также сообщение не отправляется. Не могли бы вы рассказать мне причину моей проблемы? – Vinod

0

Возможно, вы можете посмотреть ниже ссылку для отправки СМС в андроид. Все остальные плагины PhoneGap, доступные в Git, устарели.

https://github.com/javatechig/phonegap-sms-plugin

Вы можете найти шаги для использования плагином выше here

** Я не уверен, если он работает с PhoneGap3.0, но это работает для меня в 2.9 версии. **

+0

Я пробовал использовать этот плагин. Проблема в том, что Phonegap 3.0 стал большим изменением в том, как он работает с плагинами. Я не уверен, как заставить его работать с phonegap 3.0. – aharris88

+0

Я выполнил инструкции на этой странице, и я получаю сообщение об ошибке «Класс не найден» – aharris88

+0

Я разблокировал ваше репо, и я пытаюсь перейти на phonegap 3.0. Дайте мне знать, если у вас есть идеи по его работе. Благодарю. – aharris88

0

Я только недавно преобразовал старый плагин 3.0, у меня был вопрос на нем, но полный код включен вместе с ответом на мой вопрос, который может оказаться полезным для вас. Ниже

Phonegap 3.0 Custom Plugin

Это один возвращает значение для вашего яваскрипта вызывающего абонента.Надеюсь, что это поможет, я буду рад ответить на любые вопросы.

Смежные вопросы