import org.apache.cordova.api.PluginResult.Status;
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.Plugin;
import org.apache.cordova.api.PluginResult;
@SuppressWarnings("deprecation")
public class SmsPlugin extends Plugin {
public final String ACTION_SEND_SMS = "SendSMS";
@Override
public PluginResult execute(String action, JSONArray arg1, String callbackId) {
PluginResult result = new PluginResult(Status.INVALID_ACTION);
if (action.equals(ACTION_SEND_SMS)) {
try {
String phoneNumber = arg1.getString(0);
String message = arg1.getString(1);
sendSMS(phoneNumber, message);
result = new PluginResult(Status.OK);
}
catch (JSONException ex) {
result = new PluginResult(Status.JSON_EXCEPTION, ex.getMessage());
}
}
return result;
}
private void sendSMS(String phoneNumber, String message) {
SmsManager manager = SmsManager.getDefault();
PendingIntent sentIntent = PendingIntent.getActivity(this.ctx.getContext(), 0, new Intent(), 0);
manager.sendTextMessage(phoneNumber, null, message, sentIntent, null);
}
}
---------------------------------------------------------------------------------------------------------------------------------------
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content= "width=device-width; height=device-height; user-scalable=no">
<script type="text/javascript" charset="utf-8" src="jquery.mobile/jquery-1.7.2.min"></script>
<script type="text/javascript" charset="utf-8" src="jquery.mobile/jquery.mobile-1.3.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="smsplugin.js"></script>
<script type="text/javascript">
function onDeviceReady () {
$('#send').bind('click', function () {
alert('Phone: ' + $('#phone').val() + ' Message: ' + $('#message').val());
window.plugins.SmsPlugin.send($('#phone').val(), $('#message').val(),
function () {
alert('Message sent successfully');
},
function (e) {
alert('Message Failed:' + e);
}
);
});
}
document.addEventListener("deviceready", onDeviceReady, false);
</script>
<link rel="stylesheet" href="jquery.mobile/jquery.mobile-1.3.1.min.css"/>
</head>
<body>
<div id="startPage" data-role="page" data-theme="a">
<div data-role="header">
<h1>SMS Demo</h1>
</div>
<div data-role="content">
<label for="phone">Recipient Number:</label>
<input type="tel" id="phone" name="phone" placeholder="SMS Number"/>
<label for="message">Message:</label>
<textarea id="message" name="message"></textarea>
<a href="#" id="send" data-role="button">Send</a>
</div>
</div>
</body>
</html>
------------------------------------------------------------------------------------------------------------------
var SmsPlugin = function () {};
SmsPlugin.prototype.send = function (phone, message, successCallback, failureCallback) {
return PhoneGap.exec(successCallback, failureCallback, "SmsPlugin", "SendSMS", [phone, message]);
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("SmsPlugin", new SmsPlugin());
});
------------------------------------------------------------------------------------------------------------------
<plugin name="SmsPlugin" value="net.practicaldeveloper.phonegap.plugins.SmsPlugin"/>
폰갭으로 문자를 적고 메세지를 적어서 발송하려는 걸 하고있는데 번호적고 메세지 적고 버튼을누르면
Uncaught TypeError: Cannot read property 'SmsPlugin' of undefined at file:///android_asset/www/index.html:14
이렇게 떠서 인덱스에 14번째 줄 SmsPlugin.send 이부분이 오류난것같아 아무리 고쳐보려고해도 생각대로 되지않네요
현재 네이티브로는 전화를 받지않았을경우 자동으로 지정한문구가 날라가게 했는데 사정상 폰갭으로 바꿔야해서 바꾸려고
잘되지않아 부탁드립니다. 그리고 혹시 제가위에말한 네이티브 기능을 만들어둔걸 플러그인으로 만들지않고 폰갭으로 바
꿀수있는 방법이 없을까요? 웹뷰가 있다고는 들었는데 제기능에는 웹뷰로는 안되는것같고 방법이있다면 힌트나 참고할사
이트나 제질문중에 하나라도 알고게신거있으면 답변부탁드리겠습니다.
졸업작품때문에 현재 네이티브앱으로 만든것을 하이브리드 폰갭으로 바꿔야해서 ㅠㅠ