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