ServiceIntentSender.java revision d3c6dd1522dc9b08476b70c4f6923f4debff78ee
1fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono/*
2fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * Copyright (C) 2016 The Android Open Source Project
3fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono *
4fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * Licensed under the Apache License, Version 2.0 (the "License");
5fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * you may not use this file except in compliance with the License.
6fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * You may obtain a copy of the License at
7fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono *
8fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono *      http://www.apache.org/licenses/LICENSE-2.0
9fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono *
10fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * Unless required by applicable law or agreed to in writing, software
11fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * distributed under the License is distributed on an "AS IS" BASIS,
12fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * See the License for the specific language governing permissions and
14fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * limitations under the License.
15fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono */
16fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono
17fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hironopackage com.android.mtp;
18fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono
19d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hironoimport android.annotation.Nullable;
20d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hironoimport android.app.NotificationManager;
21fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hironoimport android.content.ComponentName;
22fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hironoimport android.content.Context;
23fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hironoimport android.content.Intent;
24fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono
25fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono/**
26fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono * Sends intent to MtpDocumentsService.
27fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono */
28fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hironoclass ServiceIntentSender {
29fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono    private Context mContext;
30fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono
31fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono    ServiceIntentSender(Context context) {
32fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono        mContext = context;
33fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono    }
34fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono
35d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono    /**
36d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono     * Notify the change of opened device set.
37d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono     * @param record If a new device is opened, pass the device record. If a device is closed, pass
38d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono     *     null.
39d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono     */
40d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono    void sendUpdateNotificationIntent(@Nullable MtpDeviceRecord record) {
41fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono        final Intent intent = new Intent(MtpDocumentsService.ACTION_UPDATE_NOTIFICATION);
42fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono        intent.setComponent(new ComponentName(mContext, MtpDocumentsService.class));
43d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono        final NotificationManager manager = mContext.getSystemService(NotificationManager.class);
44d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono        if (record != null) {
45d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono            manager.startServiceInForeground(
46d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono                    intent,
47d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono                    record.deviceId,
48d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono                    MtpDocumentsService.createNotification(mContext, record));
49d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono        } else {
50d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono            mContext.startService(intent);
51d3c6dd1522dc9b08476b70c4f6923f4debff78eeDaichi Hirono        }
52fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono    }
53fda7474c5faae1e36a9274d8a5fe83e42ec6503bDaichi Hirono}
54