cocos2d-x 用瀏覽器開啟網頁

來源:互聯網
上載者:User

標籤: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"]];

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.