Merge "Allow "self" to also use RecognitionService"

This commit is contained in:
TreeHugger Robot
2020-09-09 22:27:41 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 13 deletions

View File

@@ -343,20 +343,22 @@ public final class PermissionChecker {
* @param permission The permission to check.
* @return The permission check result which is either {@link #PERMISSION_GRANTED}
* or {@link #PERMISSION_SOFT_DENIED} or {@link #PERMISSION_HARD_DENIED}.
* @param attributionTag attribution tag of caller (if not self)
* @param callingPackageName package name tag of caller (if not self)
* @param callingAttributionTag attribution tag of caller (if not self)
* @param message A message describing the reason the permission was checked
*
* @see #checkCallingOrSelfPermissionForPreflight(Context, String)
*/
@PermissionResult
public static int checkCallingOrSelfPermissionForDataDelivery(@NonNull Context context,
@NonNull String permission, @Nullable String attributionTag, @Nullable String message) {
String packageName = (Binder.getCallingPid() == Process.myPid())
? context.getPackageName() : null;
attributionTag = (Binder.getCallingPid() == Process.myPid())
? context.getAttributionTag() : attributionTag;
@NonNull String permission, @Nullable String callingPackageName,
@Nullable String callingAttributionTag, @Nullable String message) {
callingPackageName = (Binder.getCallingPid() == Process.myPid())
? context.getPackageName() : callingPackageName;
callingAttributionTag = (Binder.getCallingPid() == Process.myPid())
? context.getAttributionTag() : callingAttributionTag;
return checkPermissionForDataDelivery(context, permission, Binder.getCallingPid(),
Binder.getCallingUid(), packageName, attributionTag, message);
Binder.getCallingUid(), callingPackageName, callingAttributionTag, message);
}
/**
@@ -375,15 +377,15 @@ public final class PermissionChecker {
* app's fg/gb state) and this check will not leave a trace that permission protected
* data was delivered. When you are about to deliver the location data to a registered
* listener you should use {@link #checkCallingOrSelfPermissionForDataDelivery(Context,
* String, String, String)} which will evaluate the permission access based on the current
* fg/bg state of the app and leave a record that the data was accessed.
* String, String, String, String)} which will evaluate the permission access based on the
* current fg/bg state of the app and leave a record that the data was accessed.
*
* @param context Context for accessing resources.
* @param permission The permission to check.
* @return The permission check result which is either {@link #PERMISSION_GRANTED}
* or {@link #PERMISSION_SOFT_DENIED} or {@link #PERMISSION_HARD_DENIED}.
*
* @see #checkCallingOrSelfPermissionForDataDelivery(Context, String, String, String)
* @see #checkCallingOrSelfPermissionForDataDelivery(Context, String, String, String, String)
*/
@PermissionResult
public static int checkCallingOrSelfPermissionForPreflight(@NonNull Context context,

View File

@@ -183,10 +183,9 @@ public abstract class RecognitionService extends Service {
@NonNull String packageName, @Nullable String featureId) {
if (DBG) Log.d(TAG, "checkPermissions");
if (forDataDelivery) {
if (PermissionChecker.checkCallingPermissionForDataDelivery(this,
if (PermissionChecker.checkCallingOrSelfPermissionForDataDelivery(this,
android.Manifest.permission.RECORD_AUDIO, packageName, featureId,
null /*message*/)
== PermissionChecker.PERMISSION_GRANTED) {
null /*message*/) == PermissionChecker.PERMISSION_GRANTED) {
return true;
}
} else {