2013-04-16 127 views
0

我試圖用JavaScriptInterface在瀏覽器中打開鏈接,但它似乎沒有工作。有什麼問題與下面的代碼:在Android中打開瀏覽器

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.net.Uri; 

public class JavaScriptInterface extends Activity{ 

    Context mContext; 
    JavaScriptInterface(Context c) { 
     mContext = c; 
    } 

    public void openLink(){ 

     Uri uri = Uri.parse("http://www.google.com"); 
     startActivity(new Intent(Intent.ACTION_VIEW, uri)); 

    } 

} 

我已經擁有所需的權限:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

這應該工作;你確定,openLink被調用嗎?您應該將其執行記錄到logcat中以確保。另外,有沒有錯誤?順便說一句。請注意,您不需要Internet權限即可發送打開URL的意圖。如果您的應用程序本身想要直接訪問網絡,則只需要該權限。 – poke

+0

是的,自從擁有'Toast.makeText(mContext,「some text」,Toast.LENGTH_SHORT).show();'工作以來,openLink被調用。 –

+0

即時通訊新的。 'JavaScriptInterface'沒有被定義爲活動。這只是在WebView內部用JavaScript調用的。 –

回答

1

我不知道爲什麼你伸出的Activity。雖然您在構造函數中初始化mContext,但它永遠不會用於startActivity()

您可能需要爲如下代碼:

public class JavaScriptInterface { 
    Context mContext; 

    JavaScriptInterface(Context c) { 
     mContext = c; 
    } 

    public void openLink(){ 
     Uri uri = Uri.parse("http://www.google.com"); 
     mContext.startActivity(new Intent(Intent.ACTION_VIEW, uri)); 
    } 
} 

(不延長的活動,並呼籲mContextstartActivity()

BTW,你不需要許可android.permission.INTERNET調用此意圖。你需要一個WebView,可能是。

+0

我是新來的。你解決了我的問題....非常感謝。 –

+0

不客氣! =) – tnj