[Android] App 應用程式開發指南

Intro


Quick Start

  1. 建立第一個 Android 應用程式 - Android Developers

  2. 建構並執行應用程式 - Android Developers
    若有建立 Android Emulator 則可以直接在 Android Studio 的 Running Devices 列表找到,實體手機則可以透過 USB 或 Wi-Fi 連結裝置以加入列表。

    使用連結的 Device 執行 Run 後該 Device 就會安裝 apk 並開啟執行

  3. Build app for release
    Build 出來的 apk 預設檔案目錄:app/build/outputs/apk/


WebView

Quick Start

快速在 onCreate 時就搭建好 WebView:

  1. Add a WebView in onCreate()
    包含在 AndroidManifest.xml 加入 INTERNET permission

  2. Handle page navigation
    Override shouldOverrideUrlLoading() 讓 WebView 可以支援 URL 的開啟方式。WebView.context.startActivity(Intent) 用來支援 Intent 開啟 URL,可同時處理 App scheme launch 以及 HTTP URL 外開預設瀏覽器。

    onCreate - MainActivity.kt:

    class MainActivity : ComponentActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            ...
            val myWebView = WebView(this)
            myWebView.webViewClient = MyWebViewClient()
            myWebView.settings.javaScriptEnabled = true
            setContentView(myWebView)
            myWebView.loadUrl("https://webview.page")
        }
    }

    Override WebView client - {custom}/{MyWebViewClient}.kt:

    class MyWebViewClient : WebViewClient() {
        override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
            if (Uri.parse(url).host == "www.webview-site.com") {
                // This is the loading web site, so do not override; let my WebView load the page
                return false
            }
            // Otherwise, launch another Activity that handles URLs including App scheme URL
            Intent(Intent.ACTION_VIEW, Uri.parse(url)).apply {
                view.context.startActivity(this)
            }
            return true
        }
    }

Deep Link

AndroidManifest.xml 另外新增 <intent-filter> 作為 scheme intent 設定,以下提供 URL Scheme 範例:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter android:label="URL Scheme Setting">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- Accepts URIs that begin with "example://gizmos” -->
        <data android:scheme="example" android:host="gizmos" />
    </intent-filter>
</activity>

References

Leave a Reply

Your email address will not be published. Required fields are marked *