blob: fee2d79b67ac8a2c7fbd6b7021ca2b859bb138d9 [file] [log] [blame]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package androidx.core.role;
/**
* This class contains the name and documentation for roles that might be available in the system.
* <p>
* The list of available roles might change with a system app update, so apps should not make
* assumption about the availability of roles. Instead, they should always check if the role is
* available using {@link android.app.role.RoleManager#isRoleAvailable(String)} before trying to do
* anything with it.
*
* @see android.app.role.RoleManager
*/
public final class RoleManagerCompat {
/**
* The name of the assistant role.
* <p>
* To qualify for this role, an application needs to either implement
* {@link android.service.voice.VoiceInteractionService} or handle
* {@link android.content.Intent#ACTION_ASSIST}. The application will be able to access call log
* and SMS for its functionality.
*
* @see android.service.voice.VoiceInteractionService
* @see android.content.Intent#ACTION_ASSIST
*/
public static final String ROLE_ASSISTANT = "android.app.role.ASSISTANT";
/**
* The name of the browser role.
* <p>
* To qualify for this role, an application needs to handle the intent to browse the Internet:
* <pre class="prettyprint">{@code
* <activity>
* <intent-filter>
* <action android:name="android.intent.action.VIEW" />
* <category android:name="android.intent.category.BROWSABLE" />
* <category android:name="android.intent.category.DEFAULT" />
* <data android:scheme="http" />
* </intent-filter>
* </activity>
* }</pre>
* The application will be able to handle that intent by default.
*
* @see android.content.Intent#CATEGORY_APP_BROWSER
*/
public static final String ROLE_BROWSER = "android.app.role.BROWSER";
/**
* The name of the dialer role.
* <p>
* To qualify for this role, an application needs to handle the intent to dial:
* <pre class="prettyprint">{@code
* <activity>
* <intent-filter>
* <action android:name="android.intent.action.DIAL" />
* <category android:name="android.intent.category.DEFAULT"/>
* </intent-filter>
* <intent-filter>
* <action android:name="android.intent.action.DIAL" />
* <category android:name="android.intent.category.DEFAULT"/>
* <data android:scheme="tel" />
* </intent-filter>
* </activity>
* }</pre>
* The application will be able to handle those intents by default, and gain access to phone,
* contacts, SMS, microphone and camera.
*
* @see android.content.Intent#ACTION_DIAL
*/
public static final String ROLE_DIALER = "android.app.role.DIALER";
/**
* The name of the SMS role.
* <p>
* To qualify for this role, an application needs to declare the following components:
* <pre class="prettyprint">{@code
* <activity>
* <intent-filter>
* <action android:name="android.intent.action.SENDTO" />
* <category android:name="android.intent.category.DEFAULT" />
* <data android:scheme="smsto" />
* </intent-filter>
* </activity>
* <service android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
* <intent-filter>
* <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
* <category android:name="android.intent.category.DEFAULT" />
* <data android:scheme="smsto" />
* </intent-filter>
* </service>
* <receiver android:permission="android.permission.BROADCAST_SMS">
* <intent-filter>
* <action android:name="android.provider.Telephony.SMS_DELIVER" />
* </intent-filter>
* </receiver>
* <receiver android:permission="android.permission.BROADCAST_WAP_PUSH">
* <intent-filter>
* <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
* <data android:mimeType="application/vnd.wap.mms-message" />
* </intent-filter>
* </receiver>
* }</pre>
* The application will be able to handle the intent to send SMS by default, and gain access to
* phone, contacts, SMS, storage, microphone and camera.
*
* @see android.content.Intent#CATEGORY_APP_MESSAGING
*/
public static final String ROLE_SMS = "android.app.role.SMS";
/**
* The name of the emergency role.
* <p>
* You may not be able to request for this role on most devices as it's hidden by default and
* only for system apps.
* <p>
* To qualify for this role, an application needs to handle the intent for emergency assitance:
* <pre class="prettyprint">{@code
* <activity>
* <intent-filter>
* <action android:name="android.telephony.action.EMERGENCY_ASSISTANCE" />
* <category android:name="android.intent.category.DEFAULT" />
* </intent-filter>
* </activity>
* }</pre>
* The application will be used for emergency assistance.
*/
public static final String ROLE_EMERGENCY = "android.app.role.EMERGENCY";
/**
* The name of the home role.
* <p>
* To qualify for this role, an application needs to handle the intent for home:
* <pre class="prettyprint">{@code
* <activity>
* <intent-filter>
* <action android:name="android.intent.action.MAIN" />
* <category android:name="android.intent.category.DEFAULT" />
* <category android:name="android.intent.category.HOME" />
* </intent-filter>
* </activity>
* }</pre>
* The application will be able to handle that intent by default, and used as the default home
* app.
*
* @see android.content.Intent#CATEGORY_HOME
*/
public static final String ROLE_HOME = "android.app.role.HOME";
/**
* The name of the call redirection role.
* <p>
* To qualify for this role, an application needs to implement
* {@link android.telecom.CallRedirectionService}. The application will be able to re-write the
* phone number for an outgoing call to place the call through a call redirection service.
*
* @see android.telecom.CallRedirectionService
*/
public static final String ROLE_CALL_REDIRECTION = "android.app.role.CALL_REDIRECTION";
/**
* The name of the call screening and caller id role.
* <p>
* To qualify for this role, an application needs to implement
* {@link android.telecom.CallScreeningService}. The application will be able to screen calls
* and provide call identification.
*
* @see android.telecom.CallScreeningService
*/
public static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
/**
* The name of the system gallery role.
* <p>
* You can not request for this role because it's hidden and only for system apps. It's meant to
* be granted out-of-the-box to a gallery app that shipped with the device.
* <p>
* The application will gain full read and write access to all image and video files on external
* storage, including access to location metadata.
*
* @see android.provider.MediaStore.Images
* @see android.provider.MediaStore.Video
* @see android.Manifest.permission#ACCESS_MEDIA_LOCATION
*/
public static final String ROLE_SYSTEM_GALLERY = "android.app.role.SYSTEM_GALLERY";
private RoleManagerCompat() {}
}