Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信
Posted cynchanpin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信相关的知识,希望对你有一定的参考价值。
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(); } #endiftest.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
以上是关于Cocos2d-x3.3RC0通过JNI调用Android的Java层URI代码发送短信的主要内容,如果未能解决你的问题,请参考以下文章
cocos2d-x-3.0rc0新工程的分辨率设置和控制台输出信息
android studio2.3.3 模拟器 Jni函数调用C++对象,lldb调试this指针和相关变量显示无效的原因
COCOS2D-X 备注篇ASSETMANAGEREX使用异常解决备注-;CHECK_JNI/CC‘JAVA.LANG.NOCLASSDEFFOUNDERROR’
COCOS2D-X 备注篇ASSETMANAGEREX使用异常解决备注-;CHECK_JNI/CC‘JAVA.LANG.NOCLASSDEFFOUNDERROR’