안드로이드 웹 파일 저장 및 통신



안드로이드 스튜디오에 웹 파일을 추가하려면 Android mode에서 app을 오른쪽 버튼 클릭을 하고 아래와 같은 방법으로

assets 폴더를 생성합니다.


그리고 assets 폴더에 추가할 웹 파일을 저장합니다.

웹 파일을 추가할 때는 Android resource file이 아닌 File을 클릭해서 추가해야합니다.



assets 폴더에 추가한 웹 파일을 웹뷰에서 불러오는 방법입니다.

이 예제에서는 assets폴더의 www폴더를 만들고 www폴더 웹 파일을 추가했기 때문에 /www/urladd.html 경로를 사용했습니다.

webView.loadUrl("file:///android_asset/www/urladd.html");


추가한 웹 파일과 앱간의 JavaScript를 이용하여 통신하려면 통신할때 사용할 클래스를 생성해야합니다.

class JavaScriptMethod{
@JavascriptInterface
public void addSite(String url, String title){
for(int i = 0 ; i < data.size(); i++){
if(data.get(i).getUrl().equals(url)){
handler.post(new Runnable() {
@Override
public void run() {
webView.loadUrl("javaScript:displayMsg()");
}
});
return;
}
}
Sitedata temp = new Sitedata(url, title);
data.add(temp);
titles.add(temp.toString());
adapter.notifyDataSetChanged();
}
@JavascriptInterface
public void showUrl(){
handler.post(new Runnable() {
@Override
public void run() {
linear.setVisibility(View.VISIBLE);
}
});
}
}

그리고 webView.addJavascriptInterface(new JavaScriptMethod(), "myApp")를 추가하면 아까 만들었던 JavaScriptMethod 클래스를 웹 파일에서 myApp이라는 이름으로 사용할 수 있게 됩니다.


만약 웹 파일에 있는 JavaScript로 만들어진 function을 액티비티에서 호출하려면 아래와 같은 방법을 사용합니다.

이 때 웹 파일에 displayMsg()라는 function이 선언되어 있어야합니다.

webView.loadUrl("javaScript:displayMsg()");


아래 예제는 웹 파일 저장 및 통신, 애니메이션을 사용한 예제입니다.

    


    


위 예제의 모든 코드는 깃허브에서 볼 수 있습니다.

https://github.com/Ywook/AndroidPractice8


+ Recent posts