diff --git a/apps/Development/res/layout/development_settings.xml b/apps/Development/res/layout/development_settings.xml
index 4f185aae1..7bad3bb42 100644
--- a/apps/Development/res/layout/development_settings.xml
+++ b/apps/Development/res/layout/development_settings.xml
@@ -68,10 +68,17 @@
android:layout_alignParentLeft="true"
android:text="@string/development_settings_show_updates_text" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/Development/res/values/strings.xml b/apps/Development/res/values/strings.xml
index 21f15f6a1..ad70fbede 100644
--- a/apps/Development/res/values/strings.xml
+++ b/apps/Development/res/values/strings.xml
@@ -77,6 +77,9 @@
Immediately destroy activities
Show running processes
Show screen updates
+ Disable compatibility mode
+ Reboot required for
+ change to take effect.
Enable OpenGL ES (reboot needed)
Allow mock locations for testing
Wait for debugger
diff --git a/apps/Development/src/com/android/development/AppPicker.java b/apps/Development/src/com/android/development/AppPicker.java
index 693defbf9..28040c261 100644
--- a/apps/Development/src/com/android/development/AppPicker.java
+++ b/apps/Development/src/com/android/development/AppPicker.java
@@ -17,11 +17,14 @@
package com.android.development;
+import com.android.development.PackageBrowser.MyPackageInfo;
+
import android.app.ActivityManagerNative;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.Settings;
@@ -29,10 +32,12 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.LayoutInflater;
import android.widget.BaseAdapter;
+import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.text.Collator;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -67,96 +72,67 @@ public class AppPicker extends ListActivity
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
- ApplicationInfo app = mAdapter.appForPosition(position);
+ MyApplicationInfo app = mAdapter.itemForPosition(position);
Intent intent = new Intent();
- if (app != null) intent.setAction(app.packageName);
+ if (app.info != null) intent.setAction(app.info.packageName);
setResult(RESULT_OK, intent);
- /* This is a temporary fix for 824637 while it is blocked by 805226. When 805226 is resolved, please remove this. */
try {
boolean waitForDebugger = Settings.System.getInt(
getContentResolver(), Settings.System.WAIT_FOR_DEBUGGER, 0) != 0;
ActivityManagerNative.getDefault().setDebugApp(
- app != null ? app.packageName : null, waitForDebugger, true);
+ app.info != null ? app.info.packageName : null, waitForDebugger, true);
} catch (RemoteException ex) {
}
finish();
}
- private final class AppListAdapter extends BaseAdapter
- {
- public AppListAdapter(Context context)
- {
- mContext = context;
- mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ class MyApplicationInfo {
+ ApplicationInfo info;
+ String label;
+ }
+
+ public class AppListAdapter extends ArrayAdapter {
+ private List mPackageInfoList = new ArrayList();
- mList = context.getPackageManager().getInstalledApplications(0);
- if (mList != null) {
- Collections.sort(mList, sDisplayNameComparator);
- mList.add(0, null);
+ public AppListAdapter(Context context) {
+ super(context, R.layout.package_list_item);
+ List pkgs = context.getPackageManager().getInstalledApplications(0);
+ for (int i=0; i mList;
-
}
- private final static Comparator sDisplayNameComparator = new Comparator() {
+ private final static Comparator sDisplayNameComparator
+ = new Comparator() {
public final int
- compare(Object a, Object b)
- {
- CharSequence sa = ((ApplicationInfo) a).packageName;
- CharSequence sb = ((ApplicationInfo) b).packageName;
-
- return collator.compare(sa, sb);
+ compare(MyApplicationInfo a, MyApplicationInfo b) {
+ return collator.compare(a.label, b.label);
}
private final Collator collator = Collator.getInstance();
diff --git a/apps/Development/src/com/android/development/DevelopmentSettings.java b/apps/Development/src/com/android/development/DevelopmentSettings.java
index 3b4848a4c..9cb6fc639 100644
--- a/apps/Development/src/com/android/development/DevelopmentSettings.java
+++ b/apps/Development/src/com/android/development/DevelopmentSettings.java
@@ -38,6 +38,7 @@ import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Spinner;
+import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import java.io.FileInputStream;
@@ -58,6 +59,7 @@ public class DevelopmentSettings extends Activity {
private CheckBox mShowBackgroundCB;
private CheckBox mShowSleepCB;
private CheckBox mShowXmppCB;
+ private CheckBox mCompatibilityModeCB;
private Spinner mMaxProcsSpinner;
private Spinner mWindowAnimationScaleSpinner;
private Spinner mTransitionAnimationScaleSpinner;
@@ -69,6 +71,7 @@ public class DevelopmentSettings extends Activity {
private int mProcessLimit;
private boolean mShowSleep;
private boolean mShowXmpp;
+ private boolean mCompatibilityMode;
private AnimationScaleSelectedListener mWindowAnimationScale
= new AnimationScaleSelectedListener(0);
private AnimationScaleSelectedListener mTransitionAnimationScale
@@ -106,6 +109,8 @@ public class DevelopmentSettings extends Activity {
mShowSleepCB.setOnClickListener(mShowSleepClicked);
mShowXmppCB = (CheckBox)findViewById(R.id.show_xmpp);
mShowXmppCB.setOnClickListener(mShowXmppClicked);
+ mCompatibilityModeCB = (CheckBox)findViewById(R.id.compatibility_mode);
+ mCompatibilityModeCB.setOnClickListener(mCompatibilityModeClicked);
mMaxProcsSpinner = (Spinner)findViewById(R.id.max_procs);
mMaxProcsSpinner.setOnItemSelectedListener(mMaxProcsChanged);
ArrayAdapter adapter = new ArrayAdapter(
@@ -168,7 +173,8 @@ public class DevelopmentSettings extends Activity {
updateSharedOptions();
updateFlingerOptions();
updateSleepOptions();
- updateXmppOptions();
+ updateXmppOptions();
+ updateCompatibilityOptions();
try {
FileInputStream in = new FileInputStream( FONT_HINTING_FILE );
@@ -235,6 +241,17 @@ public class DevelopmentSettings extends Activity {
Settings.System.SHOW_PROCESSES, 0) != 0);
}
+ private void writeCompatibilityOptions() {
+ Settings.System.putInt(getContentResolver(),
+ Settings.System.COMPATIBILITY_MODE, mCompatibilityMode ? 0 : 1);
+ }
+
+ private void updateCompatibilityOptions() {
+ mCompatibilityMode = Settings.System.getInt(
+ getContentResolver(), Settings.System.COMPATIBILITY_MODE, 1) == 0;
+ mCompatibilityModeCB.setChecked(mCompatibilityMode);
+ }
+
private void updateFlingerOptions() {
// magic communication with surface flinger.
try {
@@ -332,6 +349,19 @@ public class DevelopmentSettings extends Activity {
}
};
+ private View.OnClickListener mCompatibilityModeClicked =
+ new View.OnClickListener() {
+ public void onClick(View v) {
+ mCompatibilityMode = ((CheckBox)v).isChecked();
+ writeCompatibilityOptions();
+ updateCompatibilityOptions();
+ Toast toast = Toast.makeText(DevelopmentSettings.this,
+ R.string.development_settings_compatibility_mode_toast,
+ Toast.LENGTH_LONG);
+ toast.show();
+ }
+};
+
private View.OnClickListener mShowLoadClicked = new View.OnClickListener() {
public void onClick(View v) {
boolean value = ((CheckBox)v).isChecked();
diff --git a/apps/Development/src/com/android/development/PackageBrowser.java b/apps/Development/src/com/android/development/PackageBrowser.java
index e4c233f7d..689183db6 100644
--- a/apps/Development/src/com/android/development/PackageBrowser.java
+++ b/apps/Development/src/com/android/development/PackageBrowser.java
@@ -31,27 +31,38 @@ import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.text.Collator;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-public class PackageBrowser extends ListActivity
-{
+public class PackageBrowser extends ListActivity {
+ static class MyPackageInfo {
+ PackageInfo info;
+ String label;
+ }
+
private PackageListAdapter mAdapter;
- private List mPackageInfoList = null;
+ private List mPackageInfoList = new ArrayList();
private Handler mHandler;
+ private BroadcastReceiver mRegisteredReceiver;
- public class PackageListAdapter extends ArrayAdapter
- {
+ public class PackageListAdapter extends ArrayAdapter {
- public PackageListAdapter(Context context)
- {
- super(context, android.R.layout.simple_list_item_1);
- mPackageInfoList = context.getPackageManager().getInstalledPackages(0);
+ public PackageListAdapter(Context context) {
+ super(context, R.layout.package_list_item);
+ List pkgs = context.getPackageManager().getInstalledPackages(0);
+ for (int i=0; i sDisplayNameComparator
+ = new Comparator() {
public final int
- compare(Object a, Object b)
- {
- CharSequence sa = ((PackageInfo) a).packageName;
- CharSequence sb = ((PackageInfo) b).packageName;
- return collator.compare(sa, sb);
+ compare(MyPackageInfo a, MyPackageInfo b) {
+ return collator.compare(a.label, b.label);
}
private final Collator collator = Collator.getInstance();
@@ -98,6 +110,14 @@ public class PackageBrowser extends ListActivity
registerIntentReceivers();
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (mRegisteredReceiver != null) {
+ unregisterReceiver(mRegisteredReceiver);
+ }
+ }
+
private void setupAdapter() {
mAdapter = new PackageListAdapter(this);
setListAdapter(mAdapter);
@@ -119,9 +139,9 @@ public class PackageBrowser extends ListActivity
final int curSelection = getSelectedItemPosition();
if (curSelection >= 0) {
// todo: verification dialog for package deletion
- final PackageInfo packageInfo = mAdapter.itemForPosition(curSelection);
+ final MyPackageInfo packageInfo = mAdapter.itemForPosition(curSelection);
if (packageInfo != null) {
- getPackageManager().deletePackage(packageInfo.packageName,
+ getPackageManager().deletePackage(packageInfo.info.packageName,
new IPackageDeleteObserver.Stub() {
public void packageDeleted(boolean succeeded) throws RemoteException {
if (succeeded) {
@@ -133,7 +153,7 @@ public class PackageBrowser extends ListActivity
});
// todo: verification dialog for data directory
- final String dataPath = packageInfo.applicationInfo.dataDir;
+ final String dataPath = packageInfo.info.applicationInfo.dataDir;
// todo: delete the data directory
} else {
mHandler.post(new Runnable() {
@@ -159,17 +179,17 @@ public class PackageBrowser extends ListActivity
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
- registerReceiver(new ApplicationsIntentReceiver(), filter);
+ mRegisteredReceiver = new ApplicationsIntentReceiver();
+ registerReceiver(mRegisteredReceiver, filter);
}
@Override
- protected void onListItemClick(ListView l, View v, int position, long id)
- {
- PackageInfo info =
+ protected void onListItemClick(ListView l, View v, int position, long id) {
+ MyPackageInfo info =
mAdapter.itemForPosition(position);
if (info != null) {
Intent intent = new Intent(
- null, Uri.fromParts("package", info.packageName, null));
+ null, Uri.fromParts("package", info.info.packageName, null));
intent.setClass(this, PackageSummary.class);
startActivity(intent);
}
diff --git a/apps/Development/src/com/android/development/PackageSummary.java b/apps/Development/src/com/android/development/PackageSummary.java
index a6bbbb227..5610559e5 100644
--- a/apps/Development/src/com/android/development/PackageSummary.java
+++ b/apps/Development/src/com/android/development/PackageSummary.java
@@ -31,6 +31,7 @@ import android.content.pm.ServiceInfo;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
@@ -90,7 +91,8 @@ public class PackageSummary extends Activity {
info = pm.getPackageInfo(mPackageName,
PackageManager.GET_ACTIVITIES | PackageManager.GET_RECEIVERS
| PackageManager.GET_SERVICES | PackageManager.GET_PROVIDERS
- | PackageManager.GET_INSTRUMENTATION);
+ | PackageManager.GET_INSTRUMENTATION
+ | PackageManager.GET_DISABLED_COMPONENTS);
} catch (PackageManager.NameNotFoundException e) {
}
@@ -192,6 +194,7 @@ public class PackageSummary extends Activity {
ActivityInfo ai = info.receivers[i];
Button view = (Button)inflate.inflate(
R.layout.package_item, null, false);
+ Log.i("foo", "Receiver #" + i + " of " + N + ": " + ai);
setItemText(view, info, ai.name);
receivers.addView(view, lp);
}