2013-04-16 95 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