1ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen/*
2ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * Copyright (C) 2015 The Android Open Source Project
3ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen *
4ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * Licensed under the Apache License, Version 2.0 (the "License");
5ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * you may not use this file except in compliance with the License.
6ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * You may obtain a copy of the License at
7ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen *
8ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen *      http://www.apache.org/licenses/LICENSE-2.0
9ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen *
10ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * Unless required by applicable law or agreed to in writing, software
11ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * distributed under the License is distributed on an "AS IS" BASIS,
12ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * See the License for the specific language governing permissions and
14ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen * limitations under the License.
15ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen */
16ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
17ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenpackage com.android.systemui.usb;
18ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
19ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.app.Activity;
20ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.content.BroadcastReceiver;
21ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.content.Context;
22ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.content.DialogInterface;
23ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.content.Intent;
24ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.content.IntentFilter;
25ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.hardware.usb.UsbManager;
26ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.os.Bundle;
27ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport android.os.SystemProperties;
28ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
29ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport com.android.internal.app.AlertActivity;
30ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport com.android.internal.app.AlertController;
31ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenimport com.android.systemui.R;
32ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
33ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chenpublic class UsbDebuggingSecondaryUserActivity extends AlertActivity
34ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        implements DialogInterface.OnClickListener {
35ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    private UsbDisconnectedReceiver mDisconnectedReceiver;
36ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
37ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    @Override
38ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    public void onCreate(Bundle icicle) {
39ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        super.onCreate(icicle);
40ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
41ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        if (SystemProperties.getInt("service.adb.tcp.port", 0) == 0) {
42ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen            mDisconnectedReceiver = new UsbDisconnectedReceiver(this);
43ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        }
44ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
45ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        final AlertController.AlertParams ap = mAlertParams;
46ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        ap.mTitle = getString(R.string.usb_debugging_secondary_user_title);
4705d58afddb1bbfa893354c1cb331bd69c9d2cb6fXiaohui Chen        ap.mMessage = getString(R.string.usb_debugging_secondary_user_message);
48ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        ap.mPositiveButtonText = getString(android.R.string.ok);
49ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        ap.mPositiveButtonListener = this;
50ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
51ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        setupAlert();
52ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    }
53ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
54ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    private class UsbDisconnectedReceiver extends BroadcastReceiver {
55ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        private final Activity mActivity;
56ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        public UsbDisconnectedReceiver(Activity activity) {
57ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen            mActivity = activity;
58ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        }
59ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
60ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        @Override
61ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        public void onReceive(Context content, Intent intent) {
62ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen            String action = intent.getAction();
63ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen            if (UsbManager.ACTION_USB_STATE.equals(action)) {
64ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen                boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED, false);
65ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen                if (!connected) {
66ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen                    mActivity.finish();
67ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen                }
68ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen            }
69ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        }
70ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    }
71ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
72ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    @Override
73ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    public void onStart() {
74ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        super.onStart();
75ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
76ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_STATE);
77ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        registerReceiver(mDisconnectedReceiver, filter);
78ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    }
79ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
80ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    @Override
81ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    protected void onStop() {
82ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        if (mDisconnectedReceiver != null) {
83ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen            unregisterReceiver(mDisconnectedReceiver);
84ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        }
85ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        super.onStop();
86ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    }
87ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen
88ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    @Override
89ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    public void onClick(DialogInterface dialog, int which) {
90ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen        finish();
91ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen    }
92ffcfe3411ff6ccaa35c2873151e31c879506daddXiaohui Chen}
93