展会信息港展会大全

Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信,cocos2d-x3.3rc0jni
来源:互联网   发布日期:2015-09-28 15:34:15   浏览:1689次  

导读: Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信,cocos2d-x3.3rc0jni 1、Jni不在赘述,翻看前面博客 2、直接上代码 1)Java层...

Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信,cocos2d-x3.3rc0jni

1、Jni不在赘述,翻看前面博客

2、直接上代码

1)Java层,直接加在AppActivity.java中

public class AppActivity extends Cocos2dxActivity{

public static Activity acty;

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

acty = this;

}

static {

System.loadLibrary("cocos2dcpp");

}

public static void Share(){

new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

Uri uri = Uri.parse("smsto:18928475901");

Intent it = new Intent(Intent.ACTION_SENDTO,uri);

it.putExtra("sms_body", "短信内容");

System.out.println("test");

it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

//acty.startActivity(Intent.createChooser(intent, "分享"));

acty.startActivity(it);

}

}).start();

}

}

2)Jni层:Jni/hellocpp/test类的.h和.cpp代码如下

test.h

#ifndef TEST_H_

#define TEST_H_

extern "C"

{

//C++调Java的函数接口,该方法在HelloWorldScene中menuCallback函数中使用。

// void showTipDialog(const char* title,const char* msg);

void Share();

}

#endif

test.cpp注意,这两段代码是在之前代码上修改的,部分代码与此功能无关。请自行删除。#include "test.h"

#include "cocos2d.h"

#include "platform/android/jni/JniHelper.h"

#include "../../../Classes/JniTest.h"

#include <jni.h>

#define CLASS_NAME "org/cocos2dx/cpp/JniTestHelper"

#define CLASS_NAMENEW "org/cocos2dx/cpp/AppActivity"

using namespace cocos2d;

extern "C"

{

void Share()

{

bool hasMethod;

JniMethodInfo t;

hasMethod = JniHelper::getStaticMethodInfo(t,CLASS_NAMENEW,"Share","()V");

if(hasMethod)

{

log("Share function");

if(t.methodID)

{

t.env->CallStaticVoidMethod(t.classID,t.methodID);

log("function share() was called");

}else{

log("function share was not called");

}

}else

{

log("function share was not found");

}

}

}

3)C++层

void HelloWorld::menuCloseCallback(Ref* pSender)

{

#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

//showTipDialog("exit","Exit,Really Go?");

Share();//调用tes.cpp中的Share()函数,该函数调用Java中的Share()函数

#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

exit(0);

#endif

}

4)注意

在mk文件加上test.cpp文件路径。

在头文件处加上平台判断,代码如下:

#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

#include "../proj.android/jni/hellocpp/test.h"

#endif

ANDROID开发,JAVA怎调用ANDROID专用的NDK项目,有NDK、JNI经验的进

看了你的描述,我想这个so应该没有包括与java交互这块的接口,你需要另外编写一个so通过JNI提供java与该C项目的交互接口。这个C项目的头文件你应该有吧,你只需用JNI再封装一下就可以了。

赞助本站

人工智能实验室

相关热词: android开发 应用开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港