diff options
-rw-r--r-- | res/values-as/strings.xml | 2 | ||||
-rw-r--r-- | res/values-bn/strings.xml | 2 | ||||
-rw-r--r-- | res/values-gu/strings.xml | 2 | ||||
-rw-r--r-- | res/values-kn/strings.xml | 2 | ||||
-rw-r--r-- | res/values-ml/strings.xml | 2 | ||||
-rw-r--r-- | res/values-mr/strings.xml | 2 | ||||
-rw-r--r-- | res/values-or/strings.xml | 2 | ||||
-rw-r--r-- | res/values-ta/strings.xml | 36 | ||||
-rw-r--r-- | res/values-te/strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/providers/media/MediaProvider.java | 35 | ||||
-rw-r--r-- | src/com/android/providers/media/util/UserCache.java | 38 |
11 files changed, 65 insertions, 60 deletions
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index fbb3a3538..a7ce544d8 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"মিডিয়া সঞ্চয়াগাৰ"</string> <string name="artist_label" msgid="8105600993099120273">"শিল্পী"</string> <string name="unknown" msgid="2059049215682829375">"অজ্ঞাত"</string> - <string name="root_images" msgid="5861633549189045666">"Images"</string> + <string name="root_images" msgid="5861633549189045666">"প্ৰতিচ্ছবি"</string> <string name="root_videos" msgid="8792703517064649453">"ভিডিঅ\'সমূহ"</string> <string name="root_audio" msgid="3505830755201326018">"অডিঅ’"</string> <string name="root_documents" msgid="3829103301363849237">"নথিপত্র"</string> diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 06b23e7bd..e047ae18c 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"মিডিয়া স্টোরেজ"</string> <string name="artist_label" msgid="8105600993099120273">"শিল্পী"</string> <string name="unknown" msgid="2059049215682829375">"অজানা"</string> - <string name="root_images" msgid="5861633549189045666">"Images"</string> + <string name="root_images" msgid="5861633549189045666">"ছবি"</string> <string name="root_videos" msgid="8792703517064649453">"ভিডিও"</string> <string name="root_audio" msgid="3505830755201326018">"অডিও"</string> <string name="root_documents" msgid="3829103301363849237">"ডকুমেন্ট"</string> diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 3cffaf69e..f80d1c145 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"મીડિયા સ્ટોરેજ"</string> <string name="artist_label" msgid="8105600993099120273">"કલાકાર"</string> <string name="unknown" msgid="2059049215682829375">"અજાણ"</string> - <string name="root_images" msgid="5861633549189045666">"Images"</string> + <string name="root_images" msgid="5861633549189045666">"છબીઓ"</string> <string name="root_videos" msgid="8792703517064649453">"વીડિયો"</string> <string name="root_audio" msgid="3505830755201326018">"ઑડિયો"</string> <string name="root_documents" msgid="3829103301363849237">"દસ્તાવેજો"</string> diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 6595c3bc0..6a4125ff6 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"ಮಾಧ್ಯಮ ಸಂಗ್ರಹಣೆ"</string> <string name="artist_label" msgid="8105600993099120273">"ಕಲಾವಿದರು"</string> <string name="unknown" msgid="2059049215682829375">"ಅಪರಿಚಿತ"</string> - <string name="root_images" msgid="5861633549189045666">"Images"</string> + <string name="root_images" msgid="5861633549189045666">"ಚಿತ್ರಗಳು"</string> <string name="root_videos" msgid="8792703517064649453">"ವೀಡಿಯೊಗಳು"</string> <string name="root_audio" msgid="3505830755201326018">"ಆಡಿಯೊ"</string> <string name="root_documents" msgid="3829103301363849237">"ಡಾಕ್ಯುಮೆಂಟ್ಗಳು"</string> diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index a11ddefbe..d84f95cbf 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"മീഡിയ സ്റ്റോറേജ്"</string> <string name="artist_label" msgid="8105600993099120273">"ആർട്ടിസ്റ്റ്"</string> <string name="unknown" msgid="2059049215682829375">"അജ്ഞാതം"</string> - <string name="root_images" msgid="5861633549189045666">"Images"</string> + <string name="root_images" msgid="5861633549189045666">"ചിത്രങ്ങൾ"</string> <string name="root_videos" msgid="8792703517064649453">"വീഡിയോകൾ"</string> <string name="root_audio" msgid="3505830755201326018">"ഓഡിയോ"</string> <string name="root_documents" msgid="3829103301363849237">"ഡോക്യുമെന്റുകൾ"</string> diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 98bef8845..308795f9d 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"मीडिया स्टोरेज"</string> <string name="artist_label" msgid="8105600993099120273">"कलाकार"</string> <string name="unknown" msgid="2059049215682829375">"अज्ञात"</string> - <string name="root_images" msgid="5861633549189045666">"Images"</string> + <string name="root_images" msgid="5861633549189045666">"इमेज"</string> <string name="root_videos" msgid="8792703517064649453">"व्हिडिओ"</string> <string name="root_audio" msgid="3505830755201326018">"ऑडिओ"</string> <string name="root_documents" msgid="3829103301363849237">"दस्तऐवज"</string> diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 1e185dc67..d052a5417 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -21,7 +21,7 @@ <string name="app_label" msgid="9035307001052716210">"ମିଡିଆ ଷ୍ଟୋରେଜ୍"</string> <string name="artist_label" msgid="8105600993099120273">"କଳାକାର"</string> <string name="unknown" msgid="2059049215682829375">"ଅଜଣା"</string> - <string name="root_images" msgid="5861633549189045666">"Images"</string> + <string name="root_images" msgid="5861633549189045666">"ଇମେଜ୍"</string> <string name="root_videos" msgid="8792703517064649453">"ଭିଡିଓ"</string> <string name="root_audio" msgid="3505830755201326018">"ଅଡିଓ"</string> <string name="root_documents" msgid="3829103301363849237">"ଡକ୍ୟୁମେଣ୍ଟଗୁଡ଼ିକ"</string> diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index e1404f68a..8b9180fa0 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -49,7 +49,7 @@ </plurals> <plurals name="permission_progress_write_audio" formatted="false" msgid="3757901555809850632"> <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆடியோ கோப்புகளை மாற்றியமைக்கிறது…</item> - <item quantity="one">ஆடியோ கோப்பை மாற்றியமைக்கிறது…</item> + <item quantity="one">ஆடியோ ஃபைலை மாற்றியமைக்கிறது…</item> </plurals> <plurals name="permission_write_video" formatted="false" msgid="1098082003326873084"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களில் மாற்றங்களைச் செய்ய <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> @@ -80,64 +80,64 @@ <item quantity="one">இந்த ஆடியோ ஃபைலை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_trash_audio" formatted="false" msgid="8142631134676951388"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆடியோ கோப்புகளை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> - <item quantity="one">ஆடியோ கோப்பை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆடியோ கோப்புகளை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> + <item quantity="one">ஆடியோ ஃபைலை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> </plurals> <plurals name="permission_trash_video" formatted="false" msgid="4672871911555787438"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> <item quantity="one">இந்த வீடியோவை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_trash_video" formatted="false" msgid="2566683722600149120"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> வீடியோக்களை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> - <item quantity="one">வீடியோவை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> வீடியோக்களை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> + <item quantity="one">வீடியோவை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> </plurals> <plurals name="permission_trash_image" formatted="false" msgid="6400475304599873227"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> <item quantity="one">இந்தப் படத்தை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_trash_image" formatted="false" msgid="4529586663770971476"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> படங்களை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> - <item quantity="one">படத்தை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> படங்களை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> + <item quantity="one">படத்தை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> </plurals> <plurals name="permission_trash_generic" formatted="false" msgid="3814167365075039711"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஃபைல்களை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> <item quantity="one">இந்த ஃபைலை நீக்கியவற்றிற்கு நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_trash_generic" formatted="false" msgid="6995141190896908381"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆவணங்களை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> - <item quantity="one">ஆவணத்தை ‘நீக்கியவை’ கோப்புறைக்கு நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆவணங்களை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> + <item quantity="one">ஆவணத்தை ‘நீக்கியவை’ ஃபோல்டருக்கு நகர்த்துகிறது…</item> </plurals> <plurals name="permission_untrash_audio" formatted="false" msgid="7795265980168966321"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> <item quantity="one">இந்த ஆடியோ ஃபைலை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_untrash_audio" formatted="false" msgid="4047200387122043006"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆடியோ கோப்புகளை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> - <item quantity="one">ஆடியோ கோப்பை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆடியோ கோப்புகளை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> + <item quantity="one">ஆடியோ ஃபைலை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> </plurals> <plurals name="permission_untrash_video" formatted="false" msgid="332894888445508879"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> <item quantity="one">இந்த வீடியோவை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_untrash_video" formatted="false" msgid="7996233128375495458"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> வீடியோக்களை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> - <item quantity="one">வீடியோவை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> வீடியோக்களை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> + <item quantity="one">வீடியோவை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> </plurals> <plurals name="permission_untrash_image" formatted="false" msgid="7024071378733595056"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> படங்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> <item quantity="one">இந்தப் படத்தை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_untrash_image" formatted="false" msgid="3473769131910926122"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> படங்களை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> - <item quantity="one">படத்தை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> படங்களை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> + <item quantity="one">படத்தை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> </plurals> <plurals name="permission_untrash_generic" formatted="false" msgid="6872817093731198374"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஃபைல்களை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> <item quantity="one">இந்த ஃபைலை நீக்கியவற்றில் இருந்து நகர்த்த <xliff:g id="APP_NAME_0">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> </plurals> <plurals name="permission_progress_untrash_generic" formatted="false" msgid="263867753672461510"> - <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆவணங்களை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> - <item quantity="one">ஆவணத்தை ‘நீக்கியவை’ கோப்புறையிலிருந்து நகர்த்துகிறது…</item> + <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆவணங்களை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> + <item quantity="one">ஆவணத்தை ‘நீக்கியவை’ ஃபோல்டரிலிருந்து நகர்த்துகிறது…</item> </plurals> <plurals name="permission_delete_audio" formatted="false" msgid="6848547621165184719"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> ஆடியோ ஃபைல்களை நீக்க <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> @@ -145,7 +145,7 @@ </plurals> <plurals name="permission_progress_delete_audio" formatted="false" msgid="8579231060666743501"> <item quantity="other"><xliff:g id="COUNT">^1</xliff:g> ஆடியோ கோப்புகளை நீக்குகிறது…</item> - <item quantity="one">ஆடியோ கோப்பை நீக்குகிறது…</item> + <item quantity="one">ஆடியோ ஃபைலை நீக்குகிறது…</item> </plurals> <plurals name="permission_delete_video" formatted="false" msgid="1251942606336748563"> <item quantity="other"><xliff:g id="COUNT">^2</xliff:g> வீடியோக்களை நீக்க <xliff:g id="APP_NAME_1">^1</xliff:g> ஆப்ஸை அனுமதிக்கவா?</item> diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 08d1adb52..3eb2da6a1 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -26,7 +26,7 @@ <string name="root_audio" msgid="3505830755201326018">"ఆడియో"</string> <string name="root_documents" msgid="3829103301363849237">"డాక్యుమెంట్లు"</string> <string name="permission_required" msgid="1460820436132943754">"ఈ అంశాన్ని మార్చడానికి లేదా తొలగించడానికి అనుమతి అవసరం."</string> - <string name="permission_required_action" msgid="706370952366113539">"కొనసాగించు"</string> + <string name="permission_required_action" msgid="706370952366113539">"కొనసాగించండి"</string> <string name="grant_dialog_button_allow" msgid="1644287024501033471">"అనుమతించండి"</string> <string name="grant_dialog_button_deny" msgid="6190589471415815741">"తిరస్కరించండి"</string> <plurals name="permission_more_thumb" formatted="false" msgid="4392079224649478923"> diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java index b102ed607..6a4eede60 100644 --- a/src/com/android/providers/media/MediaProvider.java +++ b/src/com/android/providers/media/MediaProvider.java @@ -23,9 +23,6 @@ import static android.app.PendingIntent.FLAG_IMMUTABLE; import static android.app.PendingIntent.FLAG_ONE_SHOT; import static android.content.ContentResolver.QUERY_ARG_SQL_SELECTION; import static android.content.ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS; -import static android.content.pm.PackageManager.MATCH_ANY_USER; -import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; -import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.database.Cursor.FIELD_TYPE_BLOB; import static android.provider.MediaStore.MATCH_DEFAULT; @@ -494,9 +491,6 @@ public class MediaProvider extends ContentProvider { private OnOpChangedListener mModeListener = (op, packageName) -> invalidateLocalCallingIdentityCache(packageName, "op " + op); - @GuardedBy("mNonWorkProfileUsers") - private final List<Integer> mNonWorkProfileUsers = new ArrayList<>(); - /** * Retrieves a cached calling identity or creates a new one. Also, always sets the app-op * description for the calling identity. @@ -1372,7 +1366,7 @@ public class MediaProvider extends ContentProvider { return false; } - if (isWorkProfile(callingUserId) || isWorkProfile(pathUserId)) { + if (mUserCache.isWorkProfile(callingUserId) || mUserCache.isWorkProfile(pathUserId)) { // Cross-user lookup not allowed if one user in the pair has a profile owner app Log.w(TAG, "CrossUser work profile check failed. Users: " + callingUserId + " and " + pathUserId); @@ -1390,33 +1384,6 @@ public class MediaProvider extends ContentProvider { return result; } - private boolean isWorkProfile(int userId) { - synchronized (mNonWorkProfileUsers) { - if (mNonWorkProfileUsers.contains(userId)) { - return false; - } - if (userId == 0) { - mNonWorkProfileUsers.add(userId); - // user 0 cannot have a profile owner - return false; - } - } - - List<Integer> uids = new ArrayList<>(); - for (ApplicationInfo ai : mPackageManager.getInstalledApplications(MATCH_DIRECT_BOOT_AWARE - | MATCH_DIRECT_BOOT_UNAWARE | MATCH_ANY_USER)) { - if (((ai.uid / PER_USER_RANGE) == userId) - && mDevicePolicyManager.isProfileOwnerApp(ai.packageName)) { - return true; - } - } - - synchronized (mNonWorkProfileUsers) { - mNonWorkProfileUsers.add(userId); - return false; - } - } - /** * Called from FUSE to transform a file * diff --git a/src/com/android/providers/media/util/UserCache.java b/src/com/android/providers/media/util/UserCache.java index 4b7dec9e5..a5b05c40d 100644 --- a/src/com/android/providers/media/util/UserCache.java +++ b/src/com/android/providers/media/util/UserCache.java @@ -16,7 +16,12 @@ package com.android.providers.media.util; +import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; +import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; + +import android.app.admin.DevicePolicyManager; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Process; import android.os.UserHandle; @@ -50,6 +55,8 @@ public class UserCache { @GuardedBy("mLock") final LongSparseArray<Context> mUserContexts = new LongSparseArray<>(); + @GuardedBy("mLock") + final LongSparseArray<Boolean> mUserIsWorkProfile = new LongSparseArray<>(); @GuardedBy("mLock") final ArrayList<UserHandle> mUsers = new ArrayList<>(); @@ -97,6 +104,37 @@ public class UserCache { } } + public boolean isWorkProfile(int userId) { + if (userId == 0) { + // Owner user can not have a work profile + return false; + } + synchronized (mLock) { + int index = mUserIsWorkProfile.indexOfKey(userId); + if (index >= 0) { + return mUserIsWorkProfile.valueAt(index); + } + } + + Context userContext = getContextForUser(UserHandle.of(userId)); + PackageManager packageManager = userContext.getPackageManager(); + DevicePolicyManager policyManager = userContext.getSystemService( + DevicePolicyManager.class); + boolean isWorkProfile = false; + for (ApplicationInfo ai : packageManager.getInstalledApplications( + MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE)) { + if (policyManager.isProfileOwnerApp(ai.packageName)) { + isWorkProfile = true; + } + } + + synchronized (mLock) { + mUserIsWorkProfile.put(userId, isWorkProfile); + } + + return isWorkProfile; + } + public @NonNull Context getContextForUser(@NonNull UserHandle user) { Context userContext; synchronized (mLock) { |