说明
1.数据类型
2.由于命令生成C文件较麻烦,直接在eclipse里面根据规则自己写C文件。直接上代码
2.1 头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class io_github_yanbober_ndkapplication_NdkJniUtils */
#ifndef _Included_com_xm_spsgsdkcore_jni_MsJni
#define _Included_com_xm_spsgsdkcore_jni_MsJni
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT void JNICALL Java_com_xm_spsgsdkcore_jni_MsJni_sentDataSms
(JNIEnv * , jclass , jstring, jstring, jshort, jbyteArray,jobject,jobject);
JNIEXPORT void JNICALL Java_com_xm_spsgsdkcore_jni_MsJni_sentTextSms
(JNIEnv * , jclass , jstring, jstring, jstring, jobject,jobject);
#ifdef __cplusplus
}
#endif
#endif
CPP文件具体的实现
#include "msfason.h"
#include <string.h>
//com.xm.spsgsdkcore.util.sms
JNIEXPORT void JNICALL Java_com_xm_spsgsdkcore_jni_MsJni_sentDataSms
(JNIEnv * env, jclass smsUtil, jstring phoneNumber , jstring scAddress, jshort destinationPort,
jbyteArray data,jobject sentPI,jobject deliverPI){
//定义SmsManager class
jclass sms_class = env->FindClass("android/telephony/SmsManager");
//jmethodID setName_method = env->GetMethodID(sms_class, "setName", "(Ljava/lang/String;)V");
//获取 SmsManager sms = SmsManager.getDefault();
jmethodID getDefault_methodID = env->GetStaticMethodID(sms_class, "getDefault", "()Landroid/telephony/SmsManager;");
//获取SMS实例对象
jobject sms_obj = env->CallStaticObjectMethod(sms_class,getDefault_methodID);
//sms.sendDataMessage(phoneNumber, null, destinationPort, data, sentPI, deliverPI);
jmethodID sendDataMessage_methodID=env->GetMethodID(sms_class, "sendDataMessage","(Ljava/lang/String;Ljava/lang/String;S[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V");
env->CallVoidMethod(sms_obj, sendDataMessage_methodID,phoneNumber,scAddress,destinationPort,data,sentPI,deliverPI);
}
com.xm.spsgsdkcore.util.sms
JNIEXPORT void JNICALL Java_com_xm_spsgsdkcore_jni_MsJni_sentTextSms
(JNIEnv * env, jclass smsUtil, jstring phoneNumber, jstring scAddress,
jstring payMessage, jobject sentPI,jobject deliverPI){
//定义SmsManager class
jclass sms_class = env->FindClass("android/telephony/SmsManager");
//jmethodID setName_method = env->GetMethodID(sms_class, "setName", "(Ljava/lang/String;)V");
//获取 SmsManager sms = SmsManager.getDefault();
jmethodID getDefault_methodID = env->GetStaticMethodID(sms_class, "getDefault", "()Landroid/telephony/SmsManager;");
//获取SMS实例对象
jobject sms_obj = env->CallStaticObjectMethod(sms_class,getDefault_methodID);
//获取方法IDsendTextMessage sms.sendTextMessage(phoneNumber, null,payMessage, sentPI, deliverPI);
jmethodID sendTextMessage_methodID=env->GetMethodID(sms_class, "sendTextMessage",
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V");
env->CallVoidMethod(sms_obj, sendTextMessage_methodID,phoneNumber,scAddress,payMessage,sentPI,deliverPI);
}