안녕하세요.
Android studio: 4.1.2
웹페이지의 "Print" 버튼을 누르면 아래와 같이 MainActivity.java 의 call_print_mainView 혹은 call_print_dialog 함수를 호출하여 프린터 다이얼로그를 띄웁니다.
페이지가 로딩 된 후 처음 이 버튼을 눌러 인쇄를 하거나 취소를 한 후,
다시 이 버튼을 눌렀을 때... 문제가 생깁니다.
앱이 다운되거나... 아무런 반응이 없다는 것입니다.
아무리 구글링을 해 봐도... 해결을 할 수가 없네요 ㅡ.ㅡ
소스는 아래와 같습니다.
##### 웹페이지의 javascript
function exec_print_at_app() {
window.print();
try {
window.MyAndroid.call_print_mainView();
} catch(e) {
try {
window.MyAndroidForDialog.call_print_dialog();
} catch(e) { }
}
}
$(document).ready(function(){
});
$(document).on("click", ".btn_print", function() { exec_print_at_app(); });
##### MainActivity.java
이 게시판에 8000 자 이상 기재를 못해서 아래 주소에 textarea 태그에 넣었습니다.
http://androidprint.igonna.net
##### 아래는 로그입니다.
#### 맨 처음 "Print" 를 클릭 했을때의 로그.
E/MyWebView: start call_print_mainView
D/cr_Ime: [InputMethodManagerWrapper.java:59] isActive: true
[InputMethodManagerWrapper.java:68] hideSoftInputFromWindow
W/art: Attempt to remove non-JNI local reference, dumping thread
#### 그런 후 "back" 버튼을 눌렀습니다.
#### 다시 "Print" 를 눌렀을 때의 로그입니다.
E/MyWebView: start call_print_mainView
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.View.post(java.lang.Runnable)' on a null object reference
at net.igonna.androidprint.MainActivity$MyJavaScriptInterface.call_print_mainView(MainActivity.java:169)
W/System.err: at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:39)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)
D/cr_Ime: [InputMethodManagerWrapper.java:59] isActive: true
[InputMethodManagerWrapper.java:68] hideSoftInputFromWindow
W/art: Attempt to remove non-JNI local reference, dumping thread