2013-04-16 3 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에 실행을 기록하여 확인해야합니다. 또한 오류가 있습니까? Btw. 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)); 
    } 
} 

은 BTW, 당신이 의도를 호출 할 수있는 권한 android.permission.INTERNET 필요하지 않습니다 (활동을 확장하고 mContextstartActivity()를 호출하지 않음). WebView 일 수도 있습니다.

+0

새로운 내용입니다. 당신은 내 문제를 해결 .... 많이 고마워 .... –

+0

당신은 오신 것을 환영합니다! =) – tnj