From d53965f305e71fd35c1b4f9ed99b2544e4807d4d Mon Sep 17 00:00:00 2001 From: Oscar Montemayor Date: Tue, 3 Aug 2010 16:43:48 -0700 Subject: [PATCH] Attempting to add new Corp App to demo Global Proxy. Making ApiDemos device admin able to set the Global Proxy. Change-Id: I565ccf5d05b1c7d775aea968e99e04894c3f8b64 --- .../res/layout/device_admin_sample.xml | 25 ++++ samples/ApiDemos/res/values/strings.xml | 3 + .../ApiDemos/res/xml/device_admin_sample.xml | 1 + .../android/apis/app/DeviceAdminSample.java | 58 +++++++++ samples/CorpApp/Android.mk | 17 +++ samples/CorpApp/AndroidManifest.xml | 44 +++++++ .../CorpApp/res/layout/corp_app_activity.xml | 36 ++++++ samples/CorpApp/res/values/strings.xml | 30 +++++ samples/CorpApp/res/xml/corp_device_admin.xml | 24 ++++ .../android/corpapp/CorpAppActivity.java | 114 ++++++++++++++++++ .../android/corpapp/CorpDeviceAdmin.java | 64 ++++++++++ 11 files changed, 416 insertions(+) create mode 100644 samples/CorpApp/Android.mk create mode 100644 samples/CorpApp/AndroidManifest.xml create mode 100644 samples/CorpApp/res/layout/corp_app_activity.xml create mode 100644 samples/CorpApp/res/values/strings.xml create mode 100644 samples/CorpApp/res/xml/corp_device_admin.xml create mode 100644 samples/CorpApp/src/com/example/android/corpapp/CorpAppActivity.java create mode 100644 samples/CorpApp/src/com/example/android/corpapp/CorpDeviceAdmin.java diff --git a/samples/ApiDemos/res/layout/device_admin_sample.xml b/samples/ApiDemos/res/layout/device_admin_sample.xml index f7273be0a..003674237 100644 --- a/samples/ApiDemos/res/layout/device_admin_sample.xml +++ b/samples/ApiDemos/res/layout/device_admin_sample.xml @@ -208,6 +208,31 @@ + + + + + + + + + + + + diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index 2dcdd49c9..e00faff7c 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -512,6 +512,9 @@ Wipe Data Max screen timeout Set Timeout + Global proxyhost:port + No proxy for domain1,domain2 + Set Global Proxy diff --git a/samples/ApiDemos/res/xml/device_admin_sample.xml b/samples/ApiDemos/res/xml/device_admin_sample.xml index 715800370..7b7551345 100644 --- a/samples/ApiDemos/res/xml/device_admin_sample.xml +++ b/samples/ApiDemos/res/xml/device_admin_sample.xml @@ -22,6 +22,7 @@ + diff --git a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java index a28217297..e6cbc9b37 100644 --- a/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java +++ b/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java @@ -42,6 +42,11 @@ import android.widget.Spinner; import android.widget.Toast; import android.widget.AdapterView.OnItemSelectedListener; +import java.net.InetSocketAddress; +import java.net.Proxy; +import java.util.Arrays; +import java.util.List; + /** * Example of a do-nothing admin class. When enabled, it lets you control * some of its policy and reports when there is interesting activity. @@ -148,6 +153,10 @@ public class DeviceAdminSample extends DeviceAdminReceiver { private EditText mTimeout; + EditText mProxyHost; + EditText mProxyList; + Button mProxyButton; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -318,6 +327,11 @@ public class DeviceAdminSample extends DeviceAdminReceiver { mTimeout = (EditText) findViewById(R.id.timeout); mTimeoutButton = (Button) findViewById(R.id.set_timeout); mTimeoutButton.setOnClickListener(mSetTimeoutListener); + + mProxyHost = (EditText) findViewById(R.id.proxyhost); + mProxyList = (EditText) findViewById(R.id.proxylist); + mProxyButton = (Button) findViewById(R.id.set_proxy); + mProxyButton.setOnClickListener(mSetProxyListener); } void updateButtonStates() { @@ -614,5 +628,49 @@ public class DeviceAdminSample extends DeviceAdminReceiver { } } }; + + private OnClickListener mSetProxyListener = new OnClickListener() { + + public void onClick(View v) { + boolean active = mDPM.isAdminActive(mDeviceAdminSample); + String proxySpec = mProxyHost.getText().toString(); + String proxyList = mProxyList.getText().toString(); + Proxy instProxy; + List exclList; + + if ((proxySpec.length() == 0) || (proxySpec == null)) { + instProxy = Proxy.NO_PROXY; + } else { + String[] proxyComponents = proxySpec.split(":"); + if (proxyComponents.length != 2) { + Toast.makeText(Controller.this, "Wrong proxy specification.", + Toast.LENGTH_SHORT).show(); + return; + } + instProxy = new Proxy(Proxy.Type.HTTP, + new InetSocketAddress(proxyComponents[0], + Integer.parseInt(proxyComponents[1]))); + } + if ((proxyList == null) || (proxyList.length() == 0)) { + exclList = null; + } else { + String[] listDoms = proxyList.split(","); + if (listDoms.length == 0) { + Toast.makeText(Controller.this, "Wrong exclusion list format.", + Toast.LENGTH_SHORT).show(); + } + exclList = Arrays.asList(listDoms); + } + if (active) { + mDPM.setGlobalProxy(mDeviceAdminSample, instProxy, exclList); + ComponentName proxyAdmin = mDPM.getGlobalProxyAdmin(); + if ((proxyAdmin != null) && (proxyAdmin.equals(mDeviceAdminSample))) { + Toast.makeText(Controller.this, "Global Proxy set by device admin.", + Toast.LENGTH_SHORT).show(); + } + } + } + }; + } } diff --git a/samples/CorpApp/Android.mk b/samples/CorpApp/Android.mk new file mode 100644 index 000000000..37b98b03e --- /dev/null +++ b/samples/CorpApp/Android.mk @@ -0,0 +1,17 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := samples + +# Only compile source java files in this apk. +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_PACKAGE_NAME := CorpApp + +LOCAL_SDK_VERSION := current + +include $(BUILD_PACKAGE) + +# Use the following include to make our test apk. +include $(call all-makefiles-under,$(LOCAL_PATH)) + diff --git a/samples/CorpApp/AndroidManifest.xml b/samples/CorpApp/AndroidManifest.xml new file mode 100644 index 000000000..22a33755f --- /dev/null +++ b/samples/CorpApp/AndroidManifest.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/CorpApp/res/layout/corp_app_activity.xml b/samples/CorpApp/res/layout/corp_app_activity.xml new file mode 100644 index 000000000..e21e73444 --- /dev/null +++ b/samples/CorpApp/res/layout/corp_app_activity.xml @@ -0,0 +1,36 @@ + + + + + + + +