android應用執行中,在設定中修改許可權,返回應用崩潰
許可權管理
我程式中使用了PermissionsDispatcher進行許可權的管理,具體使用方法,參考Android 6.0執行時許可權詳解。
問題重現
使用PermissionsDispatcher進行程式管理,在程式執行過程中,申請許可權和拒絕許可權都不會出現問題,後來發現,在程式執行過程中,比如進入某個頁面,然後點選home鍵,在設定中,選擇該應用,關閉某個許可權,再返回該應用,點選back鍵,會出現閃退的情況,跟蹤log,發現是某個欄位變成了Null,剛開始以為程式問題,後來除錯時發現,在設定修改許可權以後,程式程序變成了dead,如圖:
發現微信的操作方法就是,設定關閉某個許可權,就重新啟動。
最初的解決辦法,是在onResume方法裡邊,先儲存一下現有許可權,進入介面以後,再重新獲取一下許可權,看看有沒有改變,如果許可權改變,就重新進入啟動頁,重新獲取資料,但是失敗了,因為程序已經被殺死了,不會再走onResume方法。
最後的解決辦法:在一個Activity的基類的onCreate方法中,判斷savedInstanceState是否為null,如果為null,說明是正常啟動,如果有資料,就是設定被修改,異常關閉情況下,程式會儲存一些資料,所以在有資料的情況下,重新開啟啟動頁。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e("onCreate","savedInstanceState:"+savedInstanceState); if(savedInstanceState!=null){ Intent intent=new Intent(UI.this, SplashActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); } }
除錯結果:
savedInstanceState:null是正常啟動的情況,savedInstanceState有資料,是修改過許可權,返回當前頁面的情況,所以根據有沒有資料,可以決定是否重新開啟啟動頁。
相關推薦
android應用執行中,在設定中修改許可權,返回應用崩潰
許可權管理 我程式中使用了PermissionsDispatcher進行許可權的管理,具體使用方法,參考Android 6.0執行時許可權詳解。 問題重現 使用PermissionsDispatcher進行程式管理,在程式執行過程中,申請許可權和拒絕許可權都不會
Android 7.0 移除設定中的某些項(輔助功能、流量使用情況、位置資訊)(MTK)
--- a/packages/apps/Settings/src/com/android/settings/SettingsActivity.java +++ b/packages/apps/Settings/src/com/android/settings/SettingsActivity.jav
Android在應用設定裡關閉許可權,返回生命週期處理
問題 在處理6.0執行時許可權時,很多人都忽略了這樣一個問題: 在一個App應用裡,如果已經允許了一個許可權比如(讀取通訊許可權),此刻去呼叫相機,彈出許可權申請對話方塊,此刻點選拒絕,然後經過處理後彈出去設定許可權介面(因為許可權總歸是要申請),如果再在置介面裡開啟應用許
Qt android 設定系統狀態列為全透明,半透明、全屏,設定狀態列顏色,修改程式圖示
實現Qt平臺下,安卓系統狀態列的相關設定(全透明,半透明、全屏,設定狀態列顏色,修改程式圖示,網上文章大多數提供多種方法,但是講述的雲裡霧裡,沒有說清楚,以下是本人自己整理,希望大家相互交流學習) 實驗環境: Qt 5.12 程式語言:qml 和 c++ 執行平臺:android 正
Table裡td中的文字過長,設定不換行,隨內容同行顯示
初次用nowarp點這裡: nowrap教程 做Java的又要搞前端,有時候調樣式有點煩躁,專案中前端頁面都是自己寫的,這裡分享一個常見的樣式調整,雖然很簡單,但是沒用過的情況下還真不知道怎麼調 當td中內容過長時,內容會溢位,換行顯示,美觀超
Android擁有系統許可權,設定允許安裝未知來源的應用。
關於系統設定的程式碼,基本都在android.provider.Settings類中。仔細檢視Settings類,可以找到如下的常量值: /** * Whether applications can be installed
linux下mysql的解除安裝,安裝,忘記密碼修改密碼,允許遠端連線的設定
一、linux下mysql的解除安裝 檢視已經安裝了的MySql的包 rpm -qa|grep -i mysql [[email protected] ~]# rpm -qa|grep -i mysql MySQL-c
android 適配華為透明狀態列 ,保留虛擬導航鍵,設定狀態列透明,且設定狀態列文字顏色為黑色
設定後狀態列不遮擋底部contentview裡的內容,但是狀態列上的圖示文字顏色和我的主題色白色混在一起了 public static void setTranslucentKeepVirtualNav(Activity activity) { if (Build.VERSIO
Android 利用FileProvider安裝apk一定要宣告許可權,避免當成未知應用被阻止安裝
首先看看我們利用FileProvider來安裝apk的常規操作 /** * 通過隱式意圖呼叫系統安裝程式安裝APK */ public void install(Context conte
關於除錯----在單步執行某個程式的中間修改原始碼,當修改程式碼之後移動到下一步時,偵錯程式自動在執行下一語句之前重新編譯
在單步執行某個程式的中間修改原始碼,當修改程式碼之後移動到下一步時,偵錯程式自動在執行下一語句之前重新編譯。所以說如果編譯過程中出了問題,修改了程式,即使不手動停止重新啟動程式,直接執行的話也沒有問題的,編譯器會預設重新編譯啟動。
android http post請求,設定utf-8編碼,服務端還是出現中文亂碼 解決
HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(url);List<NameValuePair> params = new ArrayList&
koa2獲取圖片並返回,設定靜態檔案目錄,訪問本地檔案
// uri: 'http://images5.fanpop.com/image/photos/30900000/beautiful-pic-different-beautiful-pictures-30958249-1600-1200.jpg'
C# DataGridView匯出Excel,設定單元格合併,隱藏行
不得不承認,做程式需要研究。 DataGridView匯出Excel的原始碼 using System.Windows.Forms;using System.Collections.Generic;using System;using Microsoft.Office.In
iview的tree元件,設定expand不生效,以及全部展開和全部合併的實現
前端框架用到了iview,使用tree元件的時候,資料是動態繫結的,頁面控制元件呼叫如下: <Tree :data="taskTreeData"></Tree> methods中初始化資料的方法如下: initTree() { let _this
MySQL8.0設定遠端訪問許可權,Navicat連線mysql
今天centos7安裝了mysql8.0過後遠端登入資料庫報錯 1.首先檢視防火牆狀態 systemctl status firewall.service 防火牆沒有執行 2.命令登入伺服器mysql 3.執行下面語句新增許可權 use mysql; se
aws s3儲存空間,設定預設公開許可權
一、開啟需要配置的bucket1、json配置解析文件https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/example-bucket-policies-vpc-endpoint.html2、控制檯自動生成配置http:
Jedis簡介,Jedis連線 HelloWorld實現,設定redis連線密碼,Jedis 連線池例項,
Jedis簡介 實際開發中,我們需要用Redis的連線工具連線Redis然後操作Redis, 對於主流語言,Redis都提供了對應的客戶端; Jedis連線 HelloWorld實現 建一個Maven專案, pom里加下jedis依賴, 1 2 3 4
aop使用,在資料修改時,記錄修改的欄位的歷史版本記錄
配置在其他文章,提到過, 貼上程式碼 package com.audaque.collection.aop; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor;
一個數據庫查詢方法(可以動態設定查詢引數,設定查詢條件),很巧妙的組合sql語句
public <T> QueryResult<T> getScrollData(Class<T> entityClass,String wherejpql,Object[] queryParams, int firstindex, in
python利用Matplotlib,設定座標刻度大小,字型/設定圖例大小及字型/設定縱橫座標名稱及字型及大小
# coding: utf-8 import matplotlib.pyplot as plt # figsize = 11, 9 # figure, ax = plt.subplots(figsize = figsize) x1 =[0,5000,10000