zoukankan      html  css  js  c++  java
  • 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();
    }
    #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


  • 相关阅读:
    第13周学习进度情况
    【Android进阶】获取Android软件的版本信息
    【Android进阶】Android程序与JavaScript之间的简单调用
    字符串长度
    约瑟夫问题
    输入n个数和输出调整后的n个数
    输入三个整数,按由小到大的顺序输出
    学校oj平台上不去
    输入10个整数
    输入三个字符串,按由小到大的顺序输出
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6710671.html
Copyright © 2011-2022 走看看