Merge "Finish ConfirmDialog when another vpn app is always-on" into nyc-dev

am: 98801e9f2b

* commit '98801e9f2bec03faf9be0c8bb961150004d309ff':
  Finish ConfirmDialog when another vpn app is always-on

Change-Id: If8de5a6c200953599bc3965da57b0de2b1dfb76e
This commit is contained in:
Victor Chang
2016-05-31 09:51:44 +00:00
committed by android-build-merger
2 changed files with 17 additions and 0 deletions

View File

@@ -20,6 +20,7 @@
package="com.android.vpndialogs">
<uses-permission android:name="android.permission.CONTROL_VPN" />
<uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
<application android:label="VpnDialogs"
android:allowBackup="false" >

View File

@@ -60,6 +60,12 @@ public class ConfirmDialog extends AlertActivity
finish();
return;
}
final String alwaysOnVpnPackage = getAlwaysOnVpnPackage();
// Can't prepare new vpn app when another vpn is always-on
if (alwaysOnVpnPackage != null && !alwaysOnVpnPackage.equals(mPackage)) {
finish();
return;
}
View view = View.inflate(this, R.layout.confirm, null);
((TextView) view.findViewById(R.id.warning)).setText(
Html.fromHtml(getString(R.string.warning, getVpnLabel()),
@@ -76,6 +82,16 @@ public class ConfirmDialog extends AlertActivity
button.setFilterTouchesWhenObscured(true);
}
private String getAlwaysOnVpnPackage() {
try {
return mService.getAlwaysOnVpnPackage(UserHandle.myUserId());
} catch (RemoteException e) {
Log.e(TAG, "fail to call getAlwaysOnVpnPackage", e);
// Fallback to null to show the dialog
return null;
}
}
private boolean prepareVpn() {
try {
return mService.prepareVpn(mPackage, null, UserHandle.myUserId());