標籤:android style blog http color java os io
轉自:http://www.xuebuyuan.com/1396292.html,http://www.cocoachina.com/bbs/read.php?tid=88589
First!!
原始碼裡加入:
//判斷當前是否為Android平台#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //定義Jni函數資訊結構體 JniMethodInfo minfo; bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/xxx/xxx/xxx","openUrl", "(Ljava/lang/String;)V"); if (isHave) { minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID); } #endif
jni的標頭檔麼找一下include進來就好
這裡要注意的就是getStaticMethodInfo這個函數,以下對此函數的介紹轉自:http://blog.csdn.net/xiaominghimi/article/details/7602984
此函數有3個參數:
第一參數: minfo ->JniMethodInfo 類型;
第二個參數:類的路徑(我搞的是proj.android/src/xx/xxx/xxx...下面那個,還有這個不需要加.java尾碼)
第三個參數:方法名(第一參數類中的函數)
第四個參數:(參數)傳回型別
關於第二個和第三個參數都比較容易理解,那麼第四個參數需要重點介紹一下;例如你在Java中定義一個如下函數 public void helloJni(){};
那麼getStaticMethodInfo函數第三個參數你應該傳入 “()V” 表示此函數無參無傳回值!
如果有這麼一個函數: public int helloJni(int _int){return 823};
那麼getStaticMethodInfo函數第三個參數你應該傳入 “(I)I” 表示此函數需要傳入一個int類型的參數並且返回一個int類型!
大概說兩個童鞋們應該基本理解了,那麼下面詳細寫一些對照表,留給大家對照;
參數、傳回值樣式對照表:
注意:最後兩項的那個分號也是要加的!!
Second!!
在項目裡找到Cocos2dxActivity.java這個東西,
沒標出來,反正應該能找到,就在那個org.cocos2dx.lib裡。
在裡面加一個函數:
//加我public static void openUrl(String url){ Uri uri = Uri.parse(url); Intent it = new Intent(Intent.ACTION_VIEW,uri); sContext.startActivity(it);}
上面的sContext是在Cocos2dxActivity的onCreate函數裡產生後被賦值為了this,不同版本可能叫法不一樣,看著改改就好了。
//就是這個函數protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); sContext = this; this.mHandler = new Cocos2dxHandler(this); this.init(); Cocos2dxHelper.init(this, this);}
其實把openUrl加在自己項目的那個java裡也是可以的,把那個sContext改成非private的就行。直接用this的話不行,函數是static的。那函數改成非static行不行呢?最上面那個函數是getStaitcMethodInfo,估計是不行,但我懶得試……
IOS:
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://www.baidu.com"]];