昨天遇到一個問題,跟大家分享一下
某個APP秀撇,簡稱A應(yīng)用超棺,開機(jī)以u0 用戶進(jìn)行自啟動。
Setting應(yīng)用捌袜,開機(jī)分別以u0和u11用戶说搅,以哪個用戶啟動,取決于用戶以哪個用戶登錄虏等。
這樣就存在一個問題弄唧,以u0用戶啟動的APP要如果要訪問u0啟動的的Setting數(shù)據(jù)适肠,沒有問題,但是如果訪問以u11啟動的Setting數(shù)據(jù)候引,就無法讀取了侯养,這個需要做特殊處理。
在A應(yīng)用中澄干,需要Create一個與UserHandle相關(guān)的Context
如圖所示:
我們可以使用這個與UserHandle相關(guān)的Context逛揩,來獲取ContentResolver
Cursor cursor = context.getContentResolver().query(FINGERQUICK_URI, null, selection, selectionArgs, null);
使用這個與UserHandle相關(guān)的ContentResolver就可以查詢到u11的Setting數(shù)據(jù)了
多用戶的處理是google在后面添加的,并且google的多用戶手機(jī)并不多辩稽,因此很多開發(fā)者的支持并不好
其實(shí)startActivity也是如此,在多用戶的情況下逞泄,建議使用
startActivityAsUser這個api來啟動app。
如:
context.startActivityAsUser(intent,new UserHandle(ActivityManager.getCurrentUser()));