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