Loading tests/ActivityTests/AndroidManifest.xml +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ <uses-permission android:name="android.permission.REMOVE_TASKS" /> <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> <uses-permission android:name="android.permission.MANAGE_USERS" /> <application android:label="ActivityTest"> <activity android:name="ActivityTestMain"> <intent-filter> Loading @@ -31,6 +33,8 @@ <service android:name="SingleUserService" android:singleUser="true" android:exported="true"> </service> <service android:name="ServiceUserTarget"> </service> <receiver android:name="UserTarget"> </receiver> <receiver android:name="SingleUserReceiver" Loading tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java +87 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.google.android.test.activity; import java.util.ArrayList; import java.util.List; import android.app.Activity; Loading @@ -31,6 +32,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.graphics.Bitmap; import android.widget.ImageView; import android.widget.LinearLayout; Loading @@ -41,6 +43,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.content.Context; import android.content.pm.UserInfo; import android.content.res.Configuration; import android.util.Log; Loading @@ -51,6 +54,9 @@ public class ActivityTestMain extends Activity { ActivityManager mAm; Configuration mOverrideConfig; int mSecondUser; ArrayList<ServiceConnection> mConnections = new ArrayList<ServiceConnection>(); class BroadcastResultReceiver extends BroadcastReceiver { @Override Loading Loading @@ -122,6 +128,15 @@ public class ActivityTestMain extends Activity { applyOverrideConfiguration(mOverrideConfig); } } UserManager um = (UserManager)getSystemService(Context.USER_SERVICE); List<UserInfo> users = um.getUsers(); mSecondUser = Integer.MAX_VALUE; for (UserInfo ui : users) { if (ui.id != 0 && mSecondUser > ui.id) { mSecondUser = ui.id; } } } @Override Loading @@ -148,7 +163,12 @@ public class ActivityTestMain extends Activity { Log.i(TAG, "Service disconnected " + name); } }; bindService(intent, conn, Context.BIND_AUTO_CREATE); if (bindService(intent, conn, Context.BIND_AUTO_CREATE)) { mConnections.add(conn); } else { Toast.makeText(ActivityTestMain.this, "Failed to bind", Toast.LENGTH_LONG).show(); } return true; } }); Loading Loading @@ -185,15 +205,70 @@ public class ActivityTestMain extends Activity { return true; } }); menu.add("Send to user 1!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { menu.add("Send to user 0!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, UserTarget.class); sendOrderedBroadcastAsUser(intent, new UserHandle(0), null, new BroadcastResultReceiver(), null, Activity.RESULT_OK, null, null); return true; } }); menu.add("Send to user " + mSecondUser + "!").setOnMenuItemClickListener( new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, UserTarget.class); sendOrderedBroadcastAsUser(intent, new UserHandle(1), null, sendOrderedBroadcastAsUser(intent, new UserHandle(mSecondUser), null, new BroadcastResultReceiver(), null, Activity.RESULT_OK, null, null); return true; } }); menu.add("Bind to user 0!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, ServiceUserTarget.class); ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.i(TAG, "Service connected " + name + " " + service); } @Override public void onServiceDisconnected(ComponentName name) { Log.i(TAG, "Service disconnected " + name); } }; if (bindService(intent, conn, Context.BIND_AUTO_CREATE, 0)) { mConnections.add(conn); } else { Toast.makeText(ActivityTestMain.this, "Failed to bind", Toast.LENGTH_LONG).show(); } return true; } }); menu.add("Bind to user " + mSecondUser + "!").setOnMenuItemClickListener( new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, ServiceUserTarget.class); ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.i(TAG, "Service connected " + name + " " + service); } @Override public void onServiceDisconnected(ComponentName name) { Log.i(TAG, "Service disconnected " + name); } }; if (bindService(intent, conn, Context.BIND_AUTO_CREATE, mSecondUser)) { mConnections.add(conn); } else { Toast.makeText(ActivityTestMain.this, "Failed to bind", Toast.LENGTH_LONG).show(); } return true; } }); menu.add("Density!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (mOverrideConfig == null) { Loading Loading @@ -226,6 +301,15 @@ public class ActivityTestMain extends Activity { } } @Override protected void onStop() { super.onStop(); for (ServiceConnection conn : mConnections) { unbindService(conn); } mConnections.clear(); } private View scrollWrap(View view) { ScrollView scroller = new ScrollView(this); scroller.addView(view, new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, Loading tests/ActivityTests/src/com/google/android/test/activity/ServiceUserTarget.java 0 → 100644 +41 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.android.test.activity; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.os.UserHandle; import android.widget.Toast; public class ServiceUserTarget extends Service { Binder mBinder = new Binder(); @Override public void onCreate() { super.onCreate(); Toast.makeText(this, "Service created as user " + UserHandle.myUserId(), Toast.LENGTH_LONG).show(); } @Override public IBinder onBind(Intent intent) { return mBinder; } } tests/ActivityTests/src/com/google/android/test/activity/SingleUserService.java +10 −0 Original line number Diff line number Diff line Loading @@ -20,10 +20,20 @@ import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.os.UserHandle; import android.widget.Toast; public class SingleUserService extends Service { Binder mBinder = new Binder(); @Override public void onCreate() { super.onCreate(); Toast.makeText(this, "Service created as user " + UserHandle.myUserId(), Toast.LENGTH_LONG).show(); } @Override public IBinder onBind(Intent intent) { return mBinder; Loading Loading
tests/ActivityTests/AndroidManifest.xml +4 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ <uses-permission android:name="android.permission.REMOVE_TASKS" /> <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" /> <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> <uses-permission android:name="android.permission.MANAGE_USERS" /> <application android:label="ActivityTest"> <activity android:name="ActivityTestMain"> <intent-filter> Loading @@ -31,6 +33,8 @@ <service android:name="SingleUserService" android:singleUser="true" android:exported="true"> </service> <service android:name="ServiceUserTarget"> </service> <receiver android:name="UserTarget"> </receiver> <receiver android:name="SingleUserReceiver" Loading
tests/ActivityTests/src/com/google/android/test/activity/ActivityTestMain.java +87 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.google.android.test.activity; import java.util.ArrayList; import java.util.List; import android.app.Activity; Loading @@ -31,6 +32,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.graphics.Bitmap; import android.widget.ImageView; import android.widget.LinearLayout; Loading @@ -41,6 +43,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.content.Context; import android.content.pm.UserInfo; import android.content.res.Configuration; import android.util.Log; Loading @@ -51,6 +54,9 @@ public class ActivityTestMain extends Activity { ActivityManager mAm; Configuration mOverrideConfig; int mSecondUser; ArrayList<ServiceConnection> mConnections = new ArrayList<ServiceConnection>(); class BroadcastResultReceiver extends BroadcastReceiver { @Override Loading Loading @@ -122,6 +128,15 @@ public class ActivityTestMain extends Activity { applyOverrideConfiguration(mOverrideConfig); } } UserManager um = (UserManager)getSystemService(Context.USER_SERVICE); List<UserInfo> users = um.getUsers(); mSecondUser = Integer.MAX_VALUE; for (UserInfo ui : users) { if (ui.id != 0 && mSecondUser > ui.id) { mSecondUser = ui.id; } } } @Override Loading @@ -148,7 +163,12 @@ public class ActivityTestMain extends Activity { Log.i(TAG, "Service disconnected " + name); } }; bindService(intent, conn, Context.BIND_AUTO_CREATE); if (bindService(intent, conn, Context.BIND_AUTO_CREATE)) { mConnections.add(conn); } else { Toast.makeText(ActivityTestMain.this, "Failed to bind", Toast.LENGTH_LONG).show(); } return true; } }); Loading Loading @@ -185,15 +205,70 @@ public class ActivityTestMain extends Activity { return true; } }); menu.add("Send to user 1!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { menu.add("Send to user 0!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, UserTarget.class); sendOrderedBroadcastAsUser(intent, new UserHandle(0), null, new BroadcastResultReceiver(), null, Activity.RESULT_OK, null, null); return true; } }); menu.add("Send to user " + mSecondUser + "!").setOnMenuItemClickListener( new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, UserTarget.class); sendOrderedBroadcastAsUser(intent, new UserHandle(1), null, sendOrderedBroadcastAsUser(intent, new UserHandle(mSecondUser), null, new BroadcastResultReceiver(), null, Activity.RESULT_OK, null, null); return true; } }); menu.add("Bind to user 0!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, ServiceUserTarget.class); ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.i(TAG, "Service connected " + name + " " + service); } @Override public void onServiceDisconnected(ComponentName name) { Log.i(TAG, "Service disconnected " + name); } }; if (bindService(intent, conn, Context.BIND_AUTO_CREATE, 0)) { mConnections.add(conn); } else { Toast.makeText(ActivityTestMain.this, "Failed to bind", Toast.LENGTH_LONG).show(); } return true; } }); menu.add("Bind to user " + mSecondUser + "!").setOnMenuItemClickListener( new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Intent intent = new Intent(ActivityTestMain.this, ServiceUserTarget.class); ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.i(TAG, "Service connected " + name + " " + service); } @Override public void onServiceDisconnected(ComponentName name) { Log.i(TAG, "Service disconnected " + name); } }; if (bindService(intent, conn, Context.BIND_AUTO_CREATE, mSecondUser)) { mConnections.add(conn); } else { Toast.makeText(ActivityTestMain.this, "Failed to bind", Toast.LENGTH_LONG).show(); } return true; } }); menu.add("Density!").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (mOverrideConfig == null) { Loading Loading @@ -226,6 +301,15 @@ public class ActivityTestMain extends Activity { } } @Override protected void onStop() { super.onStop(); for (ServiceConnection conn : mConnections) { unbindService(conn); } mConnections.clear(); } private View scrollWrap(View view) { ScrollView scroller = new ScrollView(this); scroller.addView(view, new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, Loading
tests/ActivityTests/src/com/google/android/test/activity/ServiceUserTarget.java 0 → 100644 +41 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.android.test.activity; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.os.UserHandle; import android.widget.Toast; public class ServiceUserTarget extends Service { Binder mBinder = new Binder(); @Override public void onCreate() { super.onCreate(); Toast.makeText(this, "Service created as user " + UserHandle.myUserId(), Toast.LENGTH_LONG).show(); } @Override public IBinder onBind(Intent intent) { return mBinder; } }
tests/ActivityTests/src/com/google/android/test/activity/SingleUserService.java +10 −0 Original line number Diff line number Diff line Loading @@ -20,10 +20,20 @@ import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.os.UserHandle; import android.widget.Toast; public class SingleUserService extends Service { Binder mBinder = new Binder(); @Override public void onCreate() { super.onCreate(); Toast.makeText(this, "Service created as user " + UserHandle.myUserId(), Toast.LENGTH_LONG).show(); } @Override public IBinder onBind(Intent intent) { return mBinder; Loading