[환경] :

  android studi 4.1.1

  dependencies { classpath "com.android.tools.build:gradle:4.1.0" }

  distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

  에뮬레이터 실행시 아래 에러 발생

------------------------------------------------

> task :app:merge debugresources failed

[fatal error] aapt2-4.1.1-6503028.pom:2:1:

 

프롤로그에서는 콘텐츠가 허용되지 않습니다

------------------------------------------------

 

com.android.tools.build:gradle:4.1.1"로 update되었다고 studio 알림..

 

C:\Users\사용자아이디\.gradle\caches 폴더에 파일 충돌이 발생하는 것으로

caches 파일을 지우고 프로젝트 소스에 com.android.tools.build:gradle:4.1.1 로 세팅후 Sync 맞춤 

Mobile Native 와 Web Html의 상호 송수신 통신

 

 

MainActivity.java

더보기

WebView myWebView;

final public Handler handler = new Handler(); //android.os.Handler

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Toolbar toolbar = findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);

 

    myWebView = (WebView) findViewById(R.id.webView1);

    WebSettings setting = myWebView.getSettings();

 

    setting.setJavaScriptCanOpenWindowsAutomatically(true);

    setting.setJavaScriptEnabled(true);//자바스크립트 허용

    setting.setAllowFileAccess(true);//false => security reason

    setting.setAllowContentAccess(true);

    setting.setDomStorageEnabled(true);

 

    myWebView.addJavascriptInterface(new JsJavaBridge(this, myWebView), "oInterface");

    setting.setBuiltInZoomControls(true);

    setting.setDefaultFontSize(20);

    setting.setPluginState(WebSettings.PluginState.OFF);//no flash

    //load test.html from the assets folder

 

    myWebView.loadUrl("file:///android_asset/test.html");

 

    myWebView.setWebViewClient(new CustomWebViewClient());

    myWebView.setWebViewClient(new CustomWebViewClient(){

        public void onPageFinished(WebView viewString weburl){

            Log.d("PJM:""onPageFinished:"+weburl);

            String sJs = "javascript:testDraw('onPageFinished',1)";

 

            // view.loadUrl("javascript:alert('Javascript fire!');");

            //alert명령은 안됨.

            view.loadUrl(sJs);

    }

    });

}

// Navigation WebView with Back Button

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

    if ((keyCode == KeyEvent.KEYCODE_BACK) && this.myWebView.canGoBack()) {

    this.myWebView.goBack();

    return true;

    }

 

    return super.onKeyDown(keyCode, event);

}

 

public void javaCallHtml(int iArg){

    // Toast.makeText()

    Log.d("PJM","javaCallHtml : " + String.valueOf(iArg));

    // myWebView.loadUrl("javascript:testDraw()");

    String sJs = "javascript:testDraw('javaCallHtml', 3)";

    // https://nicgoon.tistory.com/192 참고

    //webview와 android는 비동기 상태이므로 쓰레드로 넣어전달해 주어야 한다.

    handler.post(new Runnable() {

        @Override

        public void run() {

        myWebView.loadUrl(sJs);

        }

        });

}

 

JsJavaBridge.java : html call java method

더보기

import android.util.Log;

import android.webkit.JavascriptInterface;

import android.webkit.WebView;

 

public class JsJavaBridge {

 

MainActivity mainActivity;

WebView webView;

public JsJavaBridge(MainActivity mainActivityWebView webView)  {

    this.mainActivity = mainActivity;

    this.webView = webView;

}

 

@JavascriptInterface

public void setResult(int val){

    Log.d("PJM","JavaScriptHandler.setResult is called : " + val);

    this.mainActivity.javascriptCallFinished(val);

}

@JavascriptInterface

public void calcSomething(int xint y){

 

    Log.d("PJM","calcSomething:" + String.valueOf(x) + " * " + String.valueOf(y));

    this.mainActivity.javaCallHtml( (x * y));

}

}

 

test.html

더보기

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>WebView1</title>
<meta forua="true" http-equiv="Cache-Control" content="max-age=0"/>
</head>

<body style="background-color:#212121">
<script type="text/javascript">
function testEcho(arg){
document.write(arg);
}

function testAlert(arg)
{
setTimeout(function() {
document.write(arg);
},5000);

}

 

function testDraw(arg, seq){
document.getElementById('divTag').innerHTML =arg+ seq;
}

</script>
</body>
<input type="button" onclick="window.oInterface.doSomething(1,2)" value="html call java method" />
<br>
<input type="button" onclick="testDraw('html onclick script', 2)" value="html drawing" />
<br>
<div id="divTag"></div>
</html>

 

시연)

Windows에 IBM DB2 express-c 설치 후

sqldeveloper, toad등으로 접속하여 sample database 테이블을 보려고 할때

테이블 스크마는 보이는데 테이블rows가 select가 안된다. 

 

windows의 administrator 계정에 select 권한이 없기때문이라는데..

계정생성을 db2admin으로 했고

해당계정으로 로그인 정보를 입력했는데

table 의 소유자가 administrator로 만들어져 있음을 확인함.

 

www.ibm.com/support/knowledgecenter/SSRMWJ_7.0.1/com.ibm.isim.doc/admin/tsk/tsk_ic_admin_pw4sysdb2.html

내용을 참고

서비스에서 db2 instance에 administrator계정을 추가함

 

toad나 sqldeveloper에서

dbOwner를 붙여 쿼리문 작성 하여 데이타 확인함

toad에서 db2 연결

 

 

sqldeveloper로 db2 연결

+ Recent posts