Home | History | Annotate | Download | only in DownloadProvider
      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.RECEIVE_BOOT_COMPLETED" />
     46     <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
     47     <uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
     48     <uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
     49     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     50     <uses-permission android:name="android.permission.INTERNET" />
     51     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     52     <uses-permission android:name="android.permission.ACCESS_ALL_DOWNLOADS" />
     53     <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
     54     <!-- TODO: replace with READ_NETWORK_POLICY permission when it exists -->
     55     <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
     56     <uses-permission android:name="android.permission.MODIFY_NETWORK_ACCOUNTING" />
     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 
     61     <application android:process="android.process.media"
     62                  android:label="@string/app_label"
     63                  android:icon="@mipmap/ic_launcher_download"
     64                  android:allowBackup="false"
     65                  android:supportsRtl="true"
     66                  android:usesCleartextTraffic="true">
     67 
     68         <provider android:name=".DownloadProvider"
     69                   android:authorities="downloads" android:exported="true">
     70           <!-- Anyone can access /my_downloads, the provider internally restricts access by UID for
     71                these URIs -->
     72           <path-permission android:pathPrefix="/my_downloads"
     73                            android:permission="android.permission.INTERNET"/>
     74           <!-- to access /all_downloads, ACCESS_ALL_DOWNLOADS permission is required -->
     75           <path-permission android:pathPrefix="/all_downloads"
     76                            android:permission="android.permission.ACCESS_ALL_DOWNLOADS"/>
     77           <!-- Temporary, for backwards compatibility -->
     78           <path-permission android:pathPrefix="/download"
     79                            android:permission="android.permission.INTERNET"/>
     80           <!-- Apps with access to /all_downloads/... can grant permissions, allowing them to share
     81                downloaded files with other viewers -->
     82           <grant-uri-permission android:pathPrefix="/all_downloads/"/>
     83           <!-- Apps with access to /my_downloads/... can grant permissions, allowing them to share
     84                downloaded files with other viewers -->
     85           <grant-uri-permission android:pathPrefix="/my_downloads/"/>
     86         </provider>
     87 
     88         <provider
     89             android:name=".DownloadStorageProvider"
     90             android:label="@string/storage_description"
     91             android:authorities="com.android.providers.downloads.documents"
     92             android:grantUriPermissions="true"
     93             android:exported="true"
     94             android:permission="android.permission.MANAGE_DOCUMENTS">
     95             <intent-filter>
     96                 <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
     97             </intent-filter>
     98         </provider>
     99 
    100         <service
    101             android:name=".DownloadJobService"
    102             android:exported="true"
    103             android:permission="android.permission.BIND_JOB_SERVICE" />
    104 
    105         <service
    106             android:name=".DownloadIdleService"
    107             android:exported="true"
    108             android:permission="android.permission.BIND_JOB_SERVICE" />
    109 
    110         <receiver android:name=".DownloadReceiver" android:exported="false">
    111             <intent-filter>
    112                 <action android:name="android.intent.action.BOOT_COMPLETED" />
    113                 <action android:name="android.intent.action.UID_REMOVED" />
    114             </intent-filter>
    115             <intent-filter>
    116                 <action android:name="android.intent.action.MEDIA_MOUNTED" />
    117                 <data android:scheme="file" />
    118             </intent-filter>
    119         </receiver>
    120     </application>
    121 </manifest>
    122