1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.android.providers.downloads" 4 android:sharedUserId="android.media"> 5 6 <!-- Allows access to the Download Manager --> 7 <permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" 8 android:label="@string/permlab_downloadManager" 9 android:description="@string/permdesc_downloadManager" 10 android:protectionLevel="signatureOrSystem" /> 11 12 <!-- Allows advanced access to the Download Manager --> 13 <permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED" 14 android:label="@string/permlab_downloadManagerAdvanced" 15 android:description="@string/permdesc_downloadManagerAdvanced" 16 android:protectionLevel="signatureOrSystem" /> 17 18 <!-- Allows to send download completed intents --> 19 <permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" 20 android:label="@string/permlab_downloadCompletedIntent" 21 android:description="@string/permdesc_downloadCompletedIntent" 22 android:protectionLevel="signature" /> 23 24 <!-- Allows to download non-purgeable files to the cache partition through the public API --> 25 <permission android:name="android.permission.DOWNLOAD_CACHE_NON_PURGEABLE" 26 android:label="@string/permlab_downloadCacheNonPurgeable" 27 android:description="@string/permdesc_downloadCacheNonPurgeable" 28 android:protectionLevel="signatureOrSystem"/> 29 30 <!-- Allows to queue downloads without a notification shown while the download runs. --> 31 <permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" 32 android:permissionGroup="android.permission-group.NETWORK" 33 android:label="@string/permlab_downloadWithoutNotification" 34 android:description="@string/permdesc_downloadWithoutNotification" 35 android:protectionLevel="normal"/> 36 37 <!-- Allows an app to access all downloads in the system via the /all_downloads/ URIs. The 38 protection level could be relaxed in the future to support third-party download 39 managers. --> 40 <permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" 41 android:label="@string/permlab_accessAllDownloads" 42 android:description="@string/permdesc_accessAllDownloads" 43 android:protectionLevel="signature"/> 44 45 <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> 46 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 47 <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" /> 48 <uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" /> 49 <uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" /> 50 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 51 <uses-permission android:name="android.permission.INTERNET" /> 52 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 53 <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" /> 54 <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" /> 55 <!-- TODO: replace with READ_NETWORK_POLICY permission when it exists --> 56 <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" /> 57 <uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> 58 <uses-permission android:name="android.permission.WAKE_LOCK" /> 59 <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" /> 60 <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/> 61 <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" /> 62 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> 63 <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/> 64 <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> 65 66 <application android:process="android.process.media" 67 android:label="@string/app_label" 68 android:icon="@mipmap/ic_launcher_download" 69 android:allowBackup="false" 70 android:supportsRtl="true" 71 android:forceQueryable="true" 72 android:usesCleartextTraffic="true"> 73 74 <provider android:name=".DownloadProvider" 75 android:authorities="downloads" android:exported="true"> 76 <!-- Anyone can access /my_downloads, the provider internally restricts access by UID for 77 these URIs --> 78 <path-permission android:pathPrefix="/my_downloads" 79 android:permission="android.permission.INTERNET"/> 80 <!-- to access /all_downloads, ACCESS_ALL_DOWNLOADS permission is required --> 81 <path-permission android:pathPrefix="/all_downloads" 82 android:permission="android.permission.ACCESS_ALL_DOWNLOADS"/> 83 <!-- Temporary, for backwards compatibility --> 84 <path-permission android:pathPrefix="/download" 85 android:permission="android.permission.INTERNET"/> 86 <!-- Apps with access to /all_downloads/... can grant permissions, allowing them to share 87 downloaded files with other viewers --> 88 <grant-uri-permission android:pathPrefix="/all_downloads/"/> 89 <!-- Apps with access to /my_downloads/... can grant permissions, allowing them to share 90 downloaded files with other viewers --> 91 <grant-uri-permission android:pathPrefix="/my_downloads/"/> 92 </provider> 93 94 <provider 95 android:name=".DownloadStorageProvider" 96 android:label="@string/storage_description" 97 android:authorities="com.android.providers.downloads.documents" 98 android:grantUriPermissions="true" 99 android:exported="true" 100 android:permission="android.permission.MANAGE_DOCUMENTS"> 101 <intent-filter> 102 <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> 103 </intent-filter> 104 </provider> 105 106 <service 107 android:name=".DownloadJobService" 108 android:exported="true" 109 android:permission="android.permission.BIND_JOB_SERVICE" /> 110 111 <service 112 android:name=".DownloadIdleService" 113 android:exported="true" 114 android:permission="android.permission.BIND_JOB_SERVICE" /> 115 116 <service 117 android:name=".MediaScanTriggerJob" 118 android:exported="true" 119 android:permission="android.permission.BIND_JOB_SERVICE" /> 120 121 <receiver android:name=".DownloadReceiver" android:exported="false"> 122 <intent-filter> 123 <action android:name="android.intent.action.BOOT_COMPLETED" /> 124 <action android:name="android.intent.action.UID_REMOVED" /> 125 </intent-filter> 126 <intent-filter> 127 <action android:name="android.intent.action.MEDIA_MOUNTED" /> 128 <data android:scheme="file" /> 129 </intent-filter> 130 </receiver> 131 </application> 132</manifest> 133