Merge "Add foreground service type "fileManagement""
This commit is contained in:
@@ -94,6 +94,7 @@ package android {
|
||||
field public static final String FOREGROUND_SERVICE_CAMERA = "android.permission.FOREGROUND_SERVICE_CAMERA";
|
||||
field public static final String FOREGROUND_SERVICE_CONNECTED_DEVICE = "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE";
|
||||
field public static final String FOREGROUND_SERVICE_DATA_SYNC = "android.permission.FOREGROUND_SERVICE_DATA_SYNC";
|
||||
field public static final String FOREGROUND_SERVICE_FILE_MANAGEMENT = "android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT";
|
||||
field public static final String FOREGROUND_SERVICE_HEALTH = "android.permission.FOREGROUND_SERVICE_HEALTH";
|
||||
field public static final String FOREGROUND_SERVICE_LOCATION = "android.permission.FOREGROUND_SERVICE_LOCATION";
|
||||
field public static final String FOREGROUND_SERVICE_MEDIA_PLAYBACK = "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK";
|
||||
@@ -12470,6 +12471,7 @@ package android.content.pm {
|
||||
field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CAMERA}, anyOf={android.Manifest.permission.CAMERA}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CAMERA = 64; // 0x40
|
||||
field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE}, anyOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.CHANGE_NETWORK_STATE, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, android.Manifest.permission.NFC, android.Manifest.permission.TRANSMIT_IR}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10
|
||||
field @Deprecated @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
|
||||
field @RequiresPermission(android.Manifest.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT) public static final int FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT = 4096; // 0x1000
|
||||
field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_HEALTH}, anyOf={android.Manifest.permission.ACTIVITY_RECOGNITION, android.Manifest.permission.BODY_SENSORS, android.Manifest.permission.HIGH_SAMPLING_RATE_SENSORS}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 256; // 0x100
|
||||
field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_LOCATION}, anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_LOCATION = 8; // 0x8
|
||||
field public static final int FOREGROUND_SERVICE_TYPE_MANIFEST = -1; // 0xffffffff
|
||||
@@ -12478,10 +12480,10 @@ package android.content.pm {
|
||||
field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_MICROPHONE}, anyOf={android.Manifest.permission.CAPTURE_AUDIO_OUTPUT, android.Manifest.permission.RECORD_AUDIO}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_MICROPHONE = 128; // 0x80
|
||||
field @Deprecated public static final int FOREGROUND_SERVICE_TYPE_NONE = 0; // 0x0
|
||||
field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_PHONE_CALL}, anyOf={android.Manifest.permission.MANAGE_OWN_CALLS}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_PHONE_CALL = 4; // 0x4
|
||||
field @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING = 512; // 0x200
|
||||
field @RequiresPermission(android.Manifest.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING) public static final int FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING = 512; // 0x200
|
||||
field public static final int FOREGROUND_SERVICE_TYPE_SHORT_SERVICE = 2048; // 0x800
|
||||
field @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_SPECIAL_USE, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_SPECIAL_USE = 1073741824; // 0x40000000
|
||||
field @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED = 1024; // 0x400
|
||||
field @RequiresPermission(android.Manifest.permission.FOREGROUND_SERVICE_SPECIAL_USE) public static final int FOREGROUND_SERVICE_TYPE_SPECIAL_USE = 1073741824; // 0x40000000
|
||||
field @RequiresPermission(android.Manifest.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED) public static final int FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED = 1024; // 0x400
|
||||
field public int flags;
|
||||
field public String permission;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA;
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE;
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC;
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT;
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_HEALTH;
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION;
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST;
|
||||
@@ -411,6 +412,22 @@ public abstract class ForegroundServiceTypePolicy {
|
||||
null /* no type specific permissions */, null /* no type specific permissions */
|
||||
);
|
||||
|
||||
/**
|
||||
* The policy for the {@link ServiceInfo#FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT}.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final @NonNull ForegroundServiceTypePolicyInfo FGS_TYPE_POLICY_FILE_MANAGEMENT =
|
||||
new ForegroundServiceTypePolicyInfo(
|
||||
FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT,
|
||||
ForegroundServiceTypePolicyInfo.INVALID_CHANGE_ID,
|
||||
ForegroundServiceTypePolicyInfo.INVALID_CHANGE_ID,
|
||||
new ForegroundServiceTypePermissions(new ForegroundServiceTypePermission[] {
|
||||
new RegularPermission(Manifest.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT)
|
||||
}, true),
|
||||
null
|
||||
);
|
||||
|
||||
/**
|
||||
* The policy for the {@link ServiceInfo#FOREGROUND_SERVICE_TYPE_SPECIAL_USE}.
|
||||
*
|
||||
@@ -1057,6 +1074,8 @@ public abstract class ForegroundServiceTypePolicy {
|
||||
FGS_TYPE_POLICY_SYSTEM_EXEMPTED);
|
||||
mForegroundServiceTypePolicies.put(FOREGROUND_SERVICE_TYPE_SHORT_SERVICE,
|
||||
FGS_TYPE_POLICY_SHORT_SERVICE);
|
||||
mForegroundServiceTypePolicies.put(FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT,
|
||||
FGS_TYPE_POLICY_FILE_MANAGEMENT);
|
||||
mForegroundServiceTypePolicies.put(FOREGROUND_SERVICE_TYPE_SPECIAL_USE,
|
||||
FGS_TYPE_POLICY_SPECIAL_USE);
|
||||
}
|
||||
|
||||
@@ -331,8 +331,7 @@ public class ServiceInfo extends ComponentInfo
|
||||
* Messaging use cases which host local server to relay messages across devices.
|
||||
*/
|
||||
@RequiresPermission(
|
||||
value = Manifest.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING,
|
||||
conditional = true
|
||||
value = Manifest.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING
|
||||
)
|
||||
public static final int FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING = 1 << 9;
|
||||
|
||||
@@ -360,8 +359,7 @@ public class ServiceInfo extends ComponentInfo
|
||||
* </p>
|
||||
*/
|
||||
@RequiresPermission(
|
||||
value = Manifest.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED,
|
||||
conditional = true
|
||||
value = Manifest.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED
|
||||
)
|
||||
public static final int FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED = 1 << 10;
|
||||
|
||||
@@ -411,6 +409,17 @@ public class ServiceInfo extends ComponentInfo
|
||||
*/
|
||||
public static final int FOREGROUND_SERVICE_TYPE_SHORT_SERVICE = 1 << 11;
|
||||
|
||||
/**
|
||||
* Constant corresponding to {@code fileManagement} in
|
||||
* the {@link android.R.attr#foregroundServiceType} attribute.
|
||||
* The file management use case which manages files/directories, often involving file I/O
|
||||
* across the file system.
|
||||
*/
|
||||
@RequiresPermission(
|
||||
value = Manifest.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT
|
||||
)
|
||||
public static final int FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT = 1 << 12;
|
||||
|
||||
/**
|
||||
* Constant corresponding to {@code specialUse} in
|
||||
* the {@link android.R.attr#foregroundServiceType} attribute.
|
||||
@@ -457,8 +466,7 @@ public class ServiceInfo extends ComponentInfo
|
||||
* </pre>
|
||||
*/
|
||||
@RequiresPermission(
|
||||
value = Manifest.permission.FOREGROUND_SERVICE_SPECIAL_USE,
|
||||
conditional = true
|
||||
value = Manifest.permission.FOREGROUND_SERVICE_SPECIAL_USE
|
||||
)
|
||||
public static final int FOREGROUND_SERVICE_TYPE_SPECIAL_USE = 1 << 30;
|
||||
|
||||
@@ -495,7 +503,8 @@ public class ServiceInfo extends ComponentInfo
|
||||
FOREGROUND_SERVICE_TYPE_REMOTE_MESSAGING,
|
||||
FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED,
|
||||
FOREGROUND_SERVICE_TYPE_SHORT_SERVICE,
|
||||
FOREGROUND_SERVICE_TYPE_SPECIAL_USE
|
||||
FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT,
|
||||
FOREGROUND_SERVICE_TYPE_SPECIAL_USE,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface ForegroundServiceType {}
|
||||
@@ -579,6 +588,8 @@ public class ServiceInfo extends ComponentInfo
|
||||
return "systemExempted";
|
||||
case FOREGROUND_SERVICE_TYPE_SHORT_SERVICE:
|
||||
return "shortService";
|
||||
case FOREGROUND_SERVICE_TYPE_FILE_MANAGEMENT:
|
||||
return "fileManagement";
|
||||
case FOREGROUND_SERVICE_TYPE_SPECIAL_USE:
|
||||
return "specialUse";
|
||||
default:
|
||||
|
||||
@@ -6285,6 +6285,15 @@
|
||||
android:label="@string/permlab_foregroundServiceSystemExempted"
|
||||
android:protectionLevel="normal|instant" />
|
||||
|
||||
<!-- Allows a regular application to use {@link android.app.Service#startForeground
|
||||
Service.startForeground} with the type "fileManagement".
|
||||
<p>Protection level: normal|instant
|
||||
-->
|
||||
<permission android:name="android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT"
|
||||
android:description="@string/permdesc_foregroundServiceFileManagement"
|
||||
android:label="@string/permlab_foregroundServiceFileManagement"
|
||||
android:protectionLevel="normal|instant" />
|
||||
|
||||
<!-- Allows a regular application to use {@link android.app.Service#startForeground
|
||||
Service.startForeground} with the type "specialUse".
|
||||
<p>Protection level: normal|appop|instant
|
||||
|
||||
@@ -1709,6 +1709,13 @@
|
||||
for more details.
|
||||
-->
|
||||
<flag name="shortService" value="0x800" />
|
||||
<!-- The file management use case which manages files/directories, often involving file I/O
|
||||
across the file system.
|
||||
<p>Requires the app to hold the permission
|
||||
{@link android.Manifest.permission#FOREGROUND_SERVICE_FILE_MANAGEMENT} in order to use
|
||||
this type.
|
||||
-->
|
||||
<flag name="fileManagement" value="0x1000" />
|
||||
<!-- Use cases that can't be categorized into any other foreground service types, but also
|
||||
can't use @link android.app.job.JobInfo.Builder} APIs.
|
||||
See {@link android.content.pm.ServiceInfo#FOREGROUND_SERVICE_TYPE_SPECIAL_USE} for the
|
||||
|
||||
@@ -1200,6 +1200,11 @@
|
||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
||||
<string name="permdesc_foregroundServiceSystemExempted">Allows the app to make use of foreground services with the type \"systemExempted\"</string>
|
||||
|
||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
||||
<string name="permlab_foregroundServiceFileManagement">run foreground service with the type \"fileManagement\"</string>
|
||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
||||
<string name="permdesc_foregroundServiceFileManagement">Allows the app to make use of foreground services with the type \"fileManagement\"</string>
|
||||
|
||||
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
||||
<string name="permlab_foregroundServiceSpecialUse">run foreground service with the type \"specialUse\"</string>
|
||||
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
|
||||
|
||||
@@ -753,6 +753,9 @@
|
||||
<!-- Permission required for CTS test - CtsAppFgsTestCases -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" />
|
||||
|
||||
<!-- Permission required for CTS test - CtsAppFgsTestCases -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT" />
|
||||
|
||||
<!-- Permission required for CTS test - CtsAppFgsTestCases -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user