<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.providers.downloads"
android:sharedUserId="android.media">
-
+
<!-- Allows access to the Download Manager -->
<permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"
android:label="@string/permlab_downloadManager"
android:description="@string/permdesc_downloadManagerAdvanced"
android:protectionLevel="signatureOrSystem" />
- <!-- Allows filesystem access to /cache -->
- <permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM"
- android:label="@string/permlab_cacheFilesystem"
- android:description="@string/permdesc_cacheFilesystem"
- android:protectionLevel="signature" />
-
<!-- Allows to send download completed intents -->
<permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"
android:label="@string/permlab_downloadCompletedIntent"
android:description="@string/permdesc_downloadCompletedIntent"
android:protectionLevel="signature" />
+ <!-- Allows to download non-purgeable files to the cache partition through the public API -->
+ <permission android:name="android.permission.DOWNLOAD_CACHE_NON_PURGEABLE"
+ android:label="@string/permlab_downloadCacheNonPurgeable"
+ android:description="@string/permdesc_downloadCacheNonPurgeable"
+ android:protectionLevel="signatureOrSystem"/>
+
+ <!-- Allows to queue downloads without a notification shown while the download runs. -->
+ <permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"
+ android:permissionGroup="android.permission-group.NETWORK"
+ android:label="@string/permlab_downloadWithoutNotification"
+ android:description="@string/permdesc_downloadWithoutNotification"
+ android:protectionLevel="normal"/>
+
+ <!-- Allows an app to access all downloads in the system via the /all_downloads/ URIs. The
+ protection level could be relaxed in the future to support third-party download
+ managers. -->
+ <permission android:name="android.permission.ACCESS_ALL_DOWNLOADS"
+ android:label="@string/permlab_accessAllDownloads"
+ android:description="@string/permdesc_accessAllDownloads"
+ android:protectionLevel="signature"/>
+
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
- <uses-permission android:name="android.permission.ACCESS_DRM" />
<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
<uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" />
+ <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+ <!-- TODO: replace with READ_NETWORK_POLICY permission when it exists -->
+ <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
+ <uses-permission android:name="android.permission.MODIFY_NETWORK_ACCOUNTING" />
+ <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
<application android:process="android.process.media"
- android:label="Download Manager">
+ android:label="@string/app_label"
+ android:icon="@mipmap/ic_launcher_download"
+ android:allowBackup="false">
+
<provider android:name=".DownloadProvider"
- android:authorities="downloads"
- android:permission="android.permission.ACCESS_DOWNLOAD_MANAGER" />
- <service android:name=".DownloadService"
- android:permission="android.permission.ACCESS_DOWNLOAD_MANAGER" />
+ android:authorities="downloads" android:exported="true">
+ <!-- Anyone can access /my_downloads, the provider internally restricts access by UID for
+ these URIs -->
+ <path-permission android:pathPrefix="/my_downloads"
+ android:permission="android.permission.INTERNET"/>
+ <!-- to access /all_downloads, ACCESS_ALL_DOWNLOADS permission is required -->
+ <path-permission android:pathPrefix="/all_downloads"
+ android:permission="android.permission.ACCESS_ALL_DOWNLOADS"/>
+ <!-- Temporary, for backwards compatibility -->
+ <path-permission android:pathPrefix="/download"
+ android:permission="android.permission.INTERNET"/>
+ <!-- Apps with access to /all_downloads/... can grant permissions, allowing them to share
+ downloaded files with other viewers -->
+ <grant-uri-permission android:pathPrefix="/all_downloads/"/>
+ <!-- Apps with access to /my_downloads/... can grant permissions, allowing them to share
+ downloaded files with other viewers -->
+ <grant-uri-permission android:pathPrefix="/my_downloads/"/>
+ </provider>
+
+ <provider
+ android:name=".DownloadStorageProvider"
+ android:authorities="com.android.providers.downloads.documents"
+ android:grantUriPermissions="true"
+ android:exported="true"
+ android:permission="android.permission.MANAGE_DOCUMENTS">
+ <intent-filter>
+ <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
+ </intent-filter>
+ </provider>
+
+ <service
+ android:name=".DownloadService"
+ android:permission="android.permission.ACCESS_DOWNLOAD_MANAGER" />
+
+ <service
+ android:name="com.android.providers.downloads.DownloadIdleService"
+ android:exported="true"
+ android:permission="android.permission.BIND_JOB_SERVICE">
+ </service>
+
<receiver android:name=".DownloadReceiver" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
+ <action android:name="android.intent.action.UID_REMOVED" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.MEDIA_MOUNTED" />
+ <data android:scheme="file" />
</intent-filter>
</receiver>
+
+ <activity android:name=".SizeLimitActivity"
+ android:launchMode="singleTask"
+ android:theme="@style/Theme.Translucent"/>
</application>
-</manifest>
+</manifest>