首页
社区
课程
招聘
[求助]在jni中发送短信
发表于: 2013-10-2 22:38 8815

[求助]在jni中发送短信

2013-10-2 22:38
8815
见到过一些开发者没有在java中写短信代码(比如说宠物王国6),我怀疑是在jni中写的,但是怎么我怎么写都报错,这是什么原因?

宠物王国6的apk

报出了如下异常:
JNI WARNING: can't call Landroid/telephony/SmsManager;.sendTextMessage on instance of Lcom/example/hellojni/HelloJni;

我已经加入了权限。

我是从hello-jni中修改的

JAVA代码
package com.example.hellojni;

import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;

public class HelloJni extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    /*
     * Create a TextView and set its content. the text is retrieved by
     * calling a native function.
     */
    TextView tv = new TextView(this);
    tv.setText(stringFromJNI());
    setContentView(tv);
  }

  public native String stringFromJNI();

  public native String unimplementedStringFromJNI();

  static {
    System.loadLibrary("hello-jni");
  }
}


c代码:
#include <string.h>
#include <jni.h>

jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env,
    jobject thiz) {
  jclass smsclazz = (*env)->FindClass(env,
      "android/telephony/SmsManager");
  if(smsclazz){
    jmethodID get = (*env)->GetStaticMethodID(env, smsclazz, "getDefault",
          "()Landroid/telephony/SmsManager;");
      jobject sms = (*env)->NewObject(env, smsclazz, get); //获得sms对象

      jmethodID send =
          (*env)->GetMethodID(env, smsclazz, "sendTextMessage",
              "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V");

      jstring destinationAddress = (*env)->NewStringUTF(env, "123465789"); //发送短信的地址
      jstring text = (*env)->NewStringUTF(env, "native"); //短信内容
      if (send) {
        (*env)->CallVoidMethod(env, thiz, send, destinationAddress, NULL, text,
            NULL, NULL);
      }
  }
  return (*env)->NewStringUTF(env, "Hello from JNI !");
}


我的源码
hello-jni2.zip

能不能给我一个demo

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已经解决了,(*env)->CallVoidMethod(env, thiz, send, destinationAddress, NULL, text,
            NULL, NULL);
的thiz换成sms,没搞清楚jclass和jobject
2013-10-2 22:44
0
雪    币: 3572
活跃值: (760)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
站位。。。。
2013-10-4 18:26
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
tong zhan  zan yxia
2013-10-4 23:07
0
游客
登录 | 注册 方可回帖
返回
//