klik untuk menyalin
👇
package com.admin.serlok;
import android.app.*;
import android.os.*;
import android.app.Activity;
import android.app.ActionBar;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.view.MenuItem;
public class MainActivity extends Activity {
private WebView webView;
// Ubah URL awal sesuai kebutuhan
private static final String START_URL = "https://serlok.zamik.net/admin.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Setup ActionBar (logo, title, back button)
ActionBar ab = getActionBar();
if (ab != null) {
ab.setDisplayShowHomeEnabled(true);
ab.setDisplayUseLogoEnabled(true);
// logo harus ada di res/drawable/logo.png
ab.setLogo(R.drawable.logo);
ab.setTitle("Dashboard Admin Serlok");
ab.setDisplayHomeAsUpEnabled(true); // tampilkan tombol kembali
}
webView = findViewById(R.id.webview);
WebSettings ws = webView.getSettings();
ws.setJavaScriptEnabled(true);
ws.setDomStorageEnabled(true);
ws.setLoadWithOverviewMode(true);
ws.setUseWideViewPort(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient() {
// Untuk API lama signature ini OK; untuk API modern bisa pakai yang dengan WebResourceRequest
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return handleUrlByIntent(url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
webView.loadUrl(START_URL);
}
/**
* Jika url mengandung skema khusus (whatsapp, fb, mailto), buka Intent eksternal.
* Untuk http/https, biarkan WebView yang memuatnya.
* Kembalikan true jika kita menangani sendiri (tidak memuat di WebView).
*/
private boolean handleUrlByIntent(String url) {
if (url == null) return false;
// mailto:
if (url.startsWith("mailto:")) {
try {
Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse(url));
startActivity(i);
} catch (ActivityNotFoundException e) {
// no mail app
}
return true;
}
// WhatsApp (salah satu format: whatsapp://send?text=...)
if (url.startsWith("whatsapp://") || url.contains("api.whatsapp.com/send")) {
try {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
} catch (ActivityNotFoundException e) {
// jika WA tidak terpasang, fallback ke web (WhatsApp web)
try {
String fallback = url;
if (!fallback.contains("http")) fallback = "https://api.whatsapp.com/send";
Intent i2 = new Intent(Intent.ACTION_VIEW, Uri.parse(fallback));
startActivity(i2);
} catch (Exception ignored) {}
}
return true;
}
// Facebook: fb://profile/..., fb://facewebmodal/f?href=...
if (url.startsWith("fb://") || url.contains("facebook.com")) {
try {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
} catch (ActivityNotFoundException e) {
// fallback ke browser
try {
Intent i2 = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i2);
} catch (Exception ignored) {}
}
return true;
}
// Untuk link lain (http/https) biarkan WebView memuat
if (url.startsWith("http://") || url.startsWith("https://")) {
webView.loadUrl(url);
return true;
}
// Untuk skema lain coba buka dengan intent umum
try {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
return true;
} catch (ActivityNotFoundException e) {
return false;
}
}
// Tombol home/up di ActionBar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
// jika WebView bisa mundur, mundurkan; kalau tidak, keluar Activity
if (webView != null && webView.canGoBack()) {
webView.goBack();
} else {
finish();
}
return true;
}
return super.onOptionsItemSelected(item);
}
// Tombol back fisik
@Override
public void onBackPressed() {
if (webView != null && webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
}
Tidak ada komentar:
Posting Komentar