Softwaring
2015-04-18 07:43
采纳率: 66.7%
浏览 2.1k

Android Service类中调用NDK编译的库的问题

现碰到的问题如下: 在Java层写了一个类代码如下:

public class MeiaPush {
        public native int meia_push_init ();
        public native int meia_push_set_client_info (String cid, String pwd, String type, String token);
        public native int meia_push_get_alarmlist (Object param, int count);
        public native int meia_push_exit ();
         
        public int MeiaPushInit ()
        {
            Log.e ("Yan", "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
            meia_push_init ();
            return meia_push_set_client_info ("00000000001", "123456", "android", "yan_yan");
        }
}

JNI层也实现了。

在其它类中调用MeiaPushInit 这个函数没有问题,
但是在Service类中调用就会出现“java.lang.unsatisfiedlinkerror native method not found”
请问 为什么会出现这个问题, 如何解决。 Service类中和其它类调用JNI函数有什么区别么?
谢谢!

这是帖子地址:Android Service类中调用NDK编译的库的问题

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Ec_boy_HL 2015-04-18 09:44
    已采纳
    缺了
    static{
        System.loadLibrary("MeiaPush ");
    }
    吧
    
    点赞 评论
  • mqiaohaibin 2015-04-18 08:01

    MeiaPush不是Service类。
    我记忆中,JNI里面需要一个参数是Context类。MeiaPush对象不是Context的子类对象。

    点赞 评论
  • Softwaring 2015-04-20 08:43

    问题描述如下:
    我在service类中开了一个线程, 然后在线程中写了如下代码:

     intent = new Intent (getBaseContext (), MeiaAlarmDetail.class); 
    Bundle bundle = new Bundle();  
    bundle.putString("DevID", alarm_info.DevID);
    intent.putExtras (bundle);
    

    但是在MeiaAlarmDetail.class这个类中, 去调用getExtras, 返回值却是null。

    点赞 评论

相关推荐 更多相似问题