안드로이드 웹뷰에서 단말기정보나 단말기 기능이 필요할때 


자바스크립트에서 메소드 호출형식으로 


네이티브 코드에 정의해놓은 메소드를 불러다 쓸 수 있다.




코드 - Android Native Code

public class Test extends Activity {

    /** Called when the activity is first created. */

    WebView webView ; 

    WebSettings wSet; 

    String HOME_URL = this.getResources().getString(R.string.homeURL);

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

     

   webView = (WebView)findViewById(R.id.webview);

        wSet = webView.getSettings(); 

     

webView.addJavascriptInterface(new JavaScriptInterface(this.getApplicationContext()

, webView

, HOME_URL

)

, "margoScript" // 웹뷰 자바스크립트에서 쓸 메소드명

);



- JavaScriptInterface Class

public class JavaScriptInterface {


Context context;

String phoneNum;

String udid;

WebView webView ;

String url;

public JavaScriptInterface(Context context, WebView webView, String url) {

this.context = context;

this.webView = webView;

this.url = url;

}

public String getUdid(){

TelephonyManager tm = 

(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

phoneNum = tm.getLine1Number();

udid = android.provider.Settings.Secure.getString(context.getContentResolver()

, Settings.Secure.ANDROID_ID);

return udid;

}

public void resetAndHome(){

webView.clearHistory();

}

}



- WebView Javascript

완전 간단하다 그냥 편하게 불러쓰자. 값을 넘겨 호출 할 수도 있다.


function getUdid(){

 

return window.margoScript.getUdid();

}

YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST