cocos2d-x 用瀏覽器打開網頁


轉自:http://www.xuebuyuan.com/1396292.htmlhttp://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"]];


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM