File: RemoteServiceException.java

package info (click to toggle)
android-platform-frameworks-base 1%3A14~beta1-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 326,092 kB
  • sloc: java: 2,032,373; xml: 343,016; cpp: 304,181; python: 3,683; ansic: 2,090; sh: 1,871; makefile: 117; sed: 19
file content (133 lines) | stat: -rw-r--r-- 4,553 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * Copyright (C) 2021 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 android.app;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.os.Bundle;
import android.util.AndroidRuntimeException;

/**
 * Exception used by {@link ActivityThread} to crash an app process for an unknown cause.
 * An exception of this class is no longer supposed to be thrown. Instead, we use fine-grained
 * sub-exceptions.
 *
 * Subclasses must be registered in
 * {@link android.app.ActivityThread#throwRemoteServiceException(java.lang.String, int)}.
 *
 * @hide
 */
public class RemoteServiceException extends AndroidRuntimeException {
    public RemoteServiceException(String msg) {
        super(msg);
    }

    public RemoteServiceException(String msg, Throwable cause) {
        super(msg, cause);
    }

    /**
     * Exception used to crash an app process when it didn't call {@link Service#startForeground}
     * in time after the service was started with
     * {@link android.content.Context#startForegroundService}.
     *
     * @hide
     */
    public static class ForegroundServiceDidNotStartInTimeException extends RemoteServiceException {
        /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */
        public static final int TYPE_ID = 1;

        private static final String KEY_SERVICE_CLASS_NAME = "serviceclassname";

        public ForegroundServiceDidNotStartInTimeException(String msg, Throwable cause) {
            super(msg, cause);
        }

        public static Bundle createExtrasForService(@NonNull ComponentName service) {
            Bundle b = new Bundle();
            b.putString(KEY_SERVICE_CLASS_NAME, service.getClassName());
            return b;
        }

        @Nullable
        public static String getServiceClassNameFromExtras(@Nullable Bundle extras) {
            return (extras == null) ? null : extras.getString(KEY_SERVICE_CLASS_NAME);
        }
    }

    /**
     * Exception used to crash an app process when the system received a RemoteException
     * while posting a notification of a foreground service.
     *
     * @hide
     */
    public static class CannotPostForegroundServiceNotificationException
            extends RemoteServiceException {
        /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */
        public static final int TYPE_ID = 2;

        public CannotPostForegroundServiceNotificationException(String msg) {
            super(msg);
        }
    }

    /**
     * Exception used to crash an app process when the system finds an error in a foreground service
     * notification.
     *
     * @hide
     */
    public static class BadForegroundServiceNotificationException extends RemoteServiceException {
        /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */
        public static final int TYPE_ID = 3;

        public BadForegroundServiceNotificationException(String msg) {
            super(msg);
        }
    }

    /**
     * Exception used to crash an app process when it calls a setting activity that requires
     * the {@code REQUEST_PASSWORD_COMPLEXITY} permission.
     *
     * @hide
     */
    public static class MissingRequestPasswordComplexityPermissionException
            extends RemoteServiceException {
        /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */
        public static final int TYPE_ID = 4;

        public MissingRequestPasswordComplexityPermissionException(String msg) {
            super(msg);
        }
    }

    /**
     * Exception used to crash an app process by {@code adb shell am crash}.
     *
     * @hide
     */
    public static class CrashedByAdbException extends RemoteServiceException {
        /** The type ID passed to {@link IApplicationThread#scheduleCrash}. */
        public static final int TYPE_ID = 5;

        public CrashedByAdbException(String msg) {
            super(msg);
        }
    }
}