亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android開發(fā)案例手冊(cè)Application跳出dialog

 更新時(shí)間:2022年06月08日 17:08:42   作者:芝麻粒兒  
這篇文章主要為大家介紹了Android開發(fā)案例手冊(cè)Application跳出dialog,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

??實(shí)踐過程

??場(chǎng)景還原

線程中監(jiān)測(cè)和硬件的連接,在任何斷開的話需要彈出框給用戶選擇是否重新連接。

所以我們的思路就是不使用依托于Activity的Dialog,而是使用依托于Aplication的Dialog。

??開始

首先是動(dòng)態(tài)申請(qǐng)權(quán)限

<!--這行代碼必須存在,否則點(diǎn)擊不了系統(tǒng)設(shè)置中的按鈕-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>? 
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

用戶不同意?那就用不了App就行了,我們一般都是如果沒給權(quán)限直接退出應(yīng)用。

現(xiàn)在哪個(gè)App不是必須要權(quán)限,看似允許用戶自主同意,但哪個(gè)不是拒絕后無法使用功能。

所以不用太糾結(jié)。

接著在硬件設(shè)備斷開連接的回調(diào)中處理

//設(shè)備斷開連接的回調(diào)  isAutoConnectDlg是個(gè)dialog彈框

override fun onClientRemove(address: String?, alias: String?) {
??? //禁止外部點(diǎn)擊取消
??? isAutoConnectDlg!!.setCanceledOnTouchOutside(false)
??? isAutoConnectDlg!!.setCancelable(false)
??? dlgWindows.setWindowAnimations(R.style.DialogRight)
??? //重要 設(shè)置彈框類型
??? if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
??????? dlgWindows.setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY)
??? } else {
??????? dlgWindows.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
??? }
??? dlgWindows.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
??? isAutoConnectDlg!!.show()
}

之后在連接成功的回調(diào)中取消該彈框即可。

至此基本就可以了。但是還有個(gè)特殊情況,就是彈出框后用戶按下了Home也就是回到了桌面,或者是Android的后臺(tái)殺進(jìn)程界面 都會(huì)造成該彈框顯示,影響不太好。

這時(shí)候就需要我們自定義Application,然后實(shí)現(xiàn)ActivityLifecycleCallbacks接口即可,該接口在Android 4.0 就已經(jīng)退出了,注冊(cè)后,所有的Activity生命周期都會(huì)回調(diào),方便監(jiān)聽處理業(yè)務(wù)。

因?yàn)檫M(jìn)入后臺(tái)頁面,Activity的pause和stop這些就會(huì)執(zhí)行,我們每個(gè)Activity去監(jiān)聽不太合適,所以ActivityLifecycleCallbacks是很好的選擇。

class MyApp : Application(), Application.ActivityLifecycleCallbacks {
??? override fun onCreate() {
??????? super.onCreate()
??????? registerActivityLifecycleCallbacks(this)
??? }
??? override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
??????? TODO("Not yet implemented")
??? }
??? override fun onActivityStarted(activity: Activity) {
??????? TODO("Not yet implemented")
??? }
??? override fun onActivityResumed(activity: Activity) {
??????? TODO("Not yet implemented")
??? }
??? override fun onActivityPaused(activity: Activity) {
??????? //在這進(jìn)行彈框處理
??? }
??? override fun onActivityStopped(activity: Activity) {
??????? //在這進(jìn)行彈框處理
??? }
??? override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
??????? TODO("Not yet implemented")
??? }
??? override fun onActivityDestroyed(activity: Activity) {
??????? TODO("Not yet implemented")
??? }
}

??可能會(huì)遇見的bug

permission denied for window type 2003

就是沒有動(dòng)態(tài)申請(qǐng)權(quán)限導(dǎo)致的問題。

以上就是Android開發(fā)案例手冊(cè)Application跳出dialog的詳細(xì)內(nèi)容,更多關(guān)于Android開發(fā)Application跳出dialog的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Flutter網(wǎng)絡(luò)請(qǐng)求Dio庫的使用及封裝詳解

    Flutter網(wǎng)絡(luò)請(qǐng)求Dio庫的使用及封裝詳解

    本文主要介紹了Flutter網(wǎng)絡(luò)請(qǐng)求Dio庫的使用及封裝詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Android selector狀態(tài)選擇器的使用詳解

    Android selector狀態(tài)選擇器的使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android selector狀態(tài)選擇器的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Android自定義ProgressBar實(shí)現(xiàn)漂亮的進(jìn)度提示框

    Android自定義ProgressBar實(shí)現(xiàn)漂亮的進(jìn)度提示框

    這篇文章主要為大家詳細(xì)介紹了Android自定義ProgressBar實(shí)現(xiàn)漂亮的進(jìn)度提示框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android繪制跟隨手指移動(dòng)的小球

    Android繪制跟隨手指移動(dòng)的小球

    這篇文章主要為大家詳細(xì)介紹了Android繪制跟隨手指移動(dòng)的小球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • Android Retrofit原理深入探索

    Android Retrofit原理深入探索

    Retrofit 是一個(gè) RESTful 的 HTTP 網(wǎng)絡(luò)請(qǐng)求框架的封裝,網(wǎng)絡(luò)請(qǐng)求的工作本質(zhì)上是 OkHttp 完成,而 Retrofit 僅負(fù)責(zé) 網(wǎng)絡(luò)請(qǐng)求接口的封裝
    2022-11-11
  • RecyclerView+CardView實(shí)現(xiàn)橫向卡片式滑動(dòng)效果

    RecyclerView+CardView實(shí)現(xiàn)橫向卡片式滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了RecyclerView+CardView實(shí)現(xiàn)橫向卡片式滑動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • flutter實(shí)現(xiàn)頁面多個(gè)webview的方案詳解

    flutter實(shí)現(xiàn)頁面多個(gè)webview的方案詳解

    這篇文章主要為大家詳細(xì)介紹了flutter如何實(shí)現(xiàn)頁面多個(gè)webview的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下
    2023-09-09
  • Android實(shí)現(xiàn)手機(jī)振動(dòng)設(shè)置的方法

    Android實(shí)現(xiàn)手機(jī)振動(dòng)設(shè)置的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)手機(jī)振動(dòng)設(shè)置的方法,涉及Android頁面布局、屬性及功能設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • Android實(shí)現(xiàn)為Tab添加Menu的方法

    Android實(shí)現(xiàn)為Tab添加Menu的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)為Tab添加Menu的方法,分析了兩種解決方法的思路并對(duì)比分析了相應(yīng)的優(yōu)缺點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • Android手把手教大家制作APP首頁(下拉刷新、自動(dòng)加載)

    Android手把手教大家制作APP首頁(下拉刷新、自動(dòng)加載)

    這篇文章主要為大家詳細(xì)介紹了Android手把手教大家制作APP首頁,實(shí)現(xiàn)下拉刷新、自動(dòng)加載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評(píng)論