2013-11-01 5 views

ответ

1

Здесь я делюсь своим рабочим плагином sms. попробуйте с этим. Я надеюсь, что это поможет вам. Если какая-либо проблема сообщит мне.

SmsPlugin.java

package org.apache.cordova.plugin; 

import org.json.JSONArray; 
import org.json.JSONException; 
import android.app.PendingIntent; 
import android.content.Intent; 
import android.telephony.SmsManager; 
import org.apache.cordova.api.CallbackContext; 
import org.apache.cordova.api.CordovaPlugin; 
import org.apache.cordova.api.PluginResult; 

public class SmsPlugin extends CordovaPlugin { 
    public final String ACTION_SEND_SMS = "SendSMS"; 

    @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{ 
        sendSMS(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.setType("vnd.android-dir/mms-sms"); 
     this.cordova.getActivity().startActivity(sendIntent); 
    } 

    private void sendSMS(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); 
    } 
} 

index.html

$(document).ready(function() { 
      $("#btnDefaultSMS").click(function(){    
       var number = $("#numberTxt").val(); 
       var message = $("#messageTxt").val(); 
       SmsPlugin.prototype.send(number, message, 'INTENT', 
        function() { 
         alert('Message sent successfully'); 
        }, 
        function (e) { 
         alert('Message Failed:' + e); 
        } 
       );    
      });    
     }); 

HTML Часть

<div data-role="fieldcontain"> 
       <input name="" id="numberTxt" placeholder="Enter mobile number" value="" type="tel" data-mini="true"><br> 
       <textarea name="" id="messageTxt" placeholder="Enter message" data-mini="false"></textarea> 
       <br> 
       <input id="btnDefaultSMS" type="submit" data-theme="e" value="Send SMS" data-mini="false"> 
       <input id="btnShare" type="submit" data-theme="e" value="Share" data-mini="false"> 
      </div> 

smsplugin.js

var SmsPlugin = function() {}; 
SmsPlugin.prototype.send = function (phone, message, method, successCallback, failureCallback) {  
    return PhoneGap.exec(successCallback, failureCallback, 'SmsPlugin', "SendSMS", [phone, message, method]); 
}; 

PhoneGap.addConstructor(function() { 
    PhoneGap.addPlugin("sms", new SmsPlugin()); 
}); 

config.xml

<feature name="SmsPlugin"> 
     <param name="android-package" value="org.apache.cordova.plugin.SmsPlugin"/> 
    </feature> 
+0

Вы могли бы отправить мне образец? Рабочий проект будет приятным. Спасибо –

+0

Если мой ответ правильный, то принимайте его так, чтобы он был полезен другим. И просто попробуйте с вышеуказанным кодом и настройте правильно. если есть проблема, пожалуйста, дайте мне знать –

+0

не работает –

1

Я посылаю SMSs из PhoneGap, используя родную отправителя смс пути создания кнопки со ссылкой, которая использует протокол смс, похожую на bradorego's suggestion на другой вопрос:

<a href="sms:/* phone number here */?body=/* body text here */">Link</a> 
Смежные вопросы