77import android .os .Bundle ;
88import android .view .Menu ;
99import android .view .MenuItem ;
10- import android .webkit .WebChromeClient ;
1110import android .webkit .WebSettings ;
1211import android .webkit .WebView ;
13- import android .webkit .WebViewClient ;
1412import android .widget .ProgressBar ;
1513import androidx .appcompat .app .AppCompatActivity ;
1614import androidx .swiperefreshlayout .widget .SwipeRefreshLayout ;
@@ -39,86 +37,70 @@ public class PreviewActivity extends AppCompatActivity {
3937 @ Override
4038 protected void onCreate (Bundle savedInstanceState ) {
4139 super .onCreate (savedInstanceState );
42- try {
43- setContentView (R .layout .activity_preview );
44-
45- toolbar = findViewById (R .id .toolbar );
46- webView = findViewById (R .id .web_view );
47- progress = findViewById (R .id .progress );
48- swipeRefresh = findViewById (R .id .refresh_layout );
49-
50- setSupportActionBar (toolbar );
51- getSupportActionBar ().setDisplayHomeAsUpEnabled (true );
52- webView .setProgressBar (progress );
53-
54- WebSettings settings = webView .getSettings ();
55- settings .setJavaScriptEnabled (true );
56- settings .setDomStorageEnabled (true );
57- settings .setAllowFileAccess (true );
58- settings .setMixedContentMode (WebSettings .MIXED_CONTENT_ALWAYS_ALLOW );
59-
60- webView .setWebViewClient (
61- new WebViewClient () {
62- @ Override
63- public void onPageStarted (WebView view , String url , Bitmap favicon ) {
64- currentUrl = url ;
65- progress .setVisibility (ProgressBar .VISIBLE );
40+ setContentView (R .layout .activity_preview );
41+
42+ toolbar = findViewById (R .id .toolbar );
43+ webView = findViewById (R .id .web_view );
44+ progress = findViewById (R .id .progress );
45+ swipeRefresh = findViewById (R .id .refresh_layout );
46+
47+ webView .setProgressBar (progress );
48+ webView .addWebViewListener (
49+ new WebViewX .WebViewListener () {
50+ @ Override
51+ public void onPageStarted (WebView view , String url , Bitmap favicon ) {
52+ currentUrl = url ;
53+ swipeRefresh .setRefreshing (true );
54+ }
55+
56+ @ Override
57+ public void onPageFinished (WebView view , String url ) {
58+ currentUrl = url ;
59+ swipeRefresh .setRefreshing (false );
60+ if (getSupportActionBar () != null ) {
61+ getSupportActionBar ().setSubtitle (currentUrl );
6662 }
63+ }
6764
68- @ Override
69- public void onPageFinished (WebView view , String url ) {
70- currentUrl = url ;
71- progress .setVisibility (ProgressBar .GONE );
72- swipeRefresh .setRefreshing (false );
73- }
74- });
75-
76- webView .setWebChromeClient (
77- new WebChromeClient () {
78- @ Override
79- public void onProgressChanged (WebView view , int newProgress ) {
80- progress .setProgress (newProgress );
81- if (newProgress >= 100 ) {
82- progress .setVisibility (ProgressBar .GONE );
83- } else {
84- progress .setVisibility (ProgressBar .VISIBLE );
85- }
65+ @ Override
66+ public void onReceivedTitle (WebView view , String title ) {
67+ if (getSupportActionBar () != null && title != null ) {
68+ getSupportActionBar ().setTitle (title );
8669 }
87- });
88-
89- Intent intent = getIntent ();
90- String indexHtml = intent .getStringExtra ("index.html" );
91-
92- if (indexHtml != null && !indexHtml .isBlank ()) {
93- File htmlFile = new File (indexHtml );
94- if (htmlFile .exists ()) {
95- startLocalServer (htmlFile .getParentFile ());
96- localServerUrl = "http://localhost:8080/" + htmlFile .getName ();
97- webView .loadUrl (localServerUrl );
98- currentUrl = localServerUrl ;
99- } else {
100- webView .loadData ("File not found" , "text/html" , "UTF-8" );
101- }
102- } else if (Intent .ACTION_VIEW .equals (intent .getAction ())) {
103- Uri data = intent .getData ();
104- if (data != null ) {
105- loadHtmlFromUri (data );
106- currentUrl = data .toString ();
107- } else {
108- webView .loadData ("File not found" , "text/html" , "UTF-8" );
109- }
70+ }
71+ });
72+ Intent intent = getIntent ();
73+ String indexHtml = intent .getStringExtra ("index.html" );
74+
75+ if (indexHtml != null && !indexHtml .isBlank ()) {
76+ File htmlFile = new File (indexHtml );
77+ if (htmlFile .exists ()) {
78+ startLocalServer (htmlFile .getParentFile ());
79+ localServerUrl = "http://localhost:8080/" + htmlFile .getName ();
80+ webView .loadUrl (localServerUrl );
81+ currentUrl = localServerUrl ;
82+ } else {
83+ webView .loadData ("File not found" , "text/html" , "UTF-8" );
84+ }
85+ } else if (Intent .ACTION_VIEW .equals (intent .getAction ())) {
86+ Uri data = intent .getData ();
87+ if (data != null ) {
88+ loadHtmlFromUri (data );
89+ currentUrl = data .toString ();
90+ } else {
91+ webView .loadData ("File not found" , "text/html" , "UTF-8" );
11092 }
93+ }
11194
112- swipeRefresh .setOnRefreshListener (
113- () -> {
114- webView .reload ();
115- });
95+ setSupportActionBar (toolbar );
96+ if (getSupportActionBar () != null ) {
97+ getSupportActionBar ().setDisplayHomeAsUpEnabled (true );
98+ getSupportActionBar ().setSubtitle (currentUrl );
99+ }
116100
117- setWebViewMode ( false );
101+ swipeRefresh . setOnRefreshListener ( webView :: reload );
118102
119- } catch (Exception err ) {
120- ErrorDialog .show (this , err );
121- }
103+ setWebViewMode (false );
122104 }
123105
124106 @ Override
@@ -133,6 +115,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
133115
134116 if (id == android .R .id .home ) {
135117 finish ();
118+ return true ;
136119 } else if (id == R .id .action_open_browser ) {
137120 if (currentUrl != null ) {
138121 try {
@@ -154,6 +137,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
154137 item .setTitle (isDesktopMode ? "Switch to Phone" : "Switch to Desktop" );
155138 webView .reload ();
156139 return true ;
140+ } else if (id == R .id .refresh ) {
141+ swipeRefresh .setRefreshing (false );
142+ webView .reload ();
143+ swipeRefresh .setRefreshing (true );
144+ return true ;
157145 }
158146
159147 return super .onOptionsItemSelected (item );
@@ -179,13 +167,16 @@ private void setWebViewMode(boolean desktopMode) {
179167 }
180168
181169 private void loadHtmlFromUri (Uri uri ) {
182- try (InputStream is = getContentResolver ().openInputStream (uri );
183- BufferedReader br = new BufferedReader (new InputStreamReader (is ))) {
170+ try {
171+ InputStream is = getContentResolver ().openInputStream (uri );
172+ BufferedReader br = new BufferedReader (new InputStreamReader (is ));
184173 StringBuilder buffer = new StringBuilder ();
185174 String line ;
186175 while ((line = br .readLine ()) != null ) {
187176 buffer .append (line ).append ("\n " );
188177 }
178+ br .close ();
179+ is .close ();
189180 webView .loadData (buffer .toString (), "text/html" , "UTF-8" );
190181 } catch (Exception e ) {
191182 webView .loadData ("Error loading file: " + e .getMessage (), "text/html" , "UTF-8" );
0 commit comments