New extended Intent protcols for installing/uninstalling apps.
Change-Id: I13be1cc58c91f51d521a1f0f734d2b2db7b2980b
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 98b867d..929867b 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -1445,10 +1445,6 @@
}
/**
- * @deprecated Use the new {@link Fragment} API
- * {@link Fragment#setRetainInstance(boolean)} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Retrieve the non-configuration instance data that was previously
* returned by {@link #onRetainNonConfigurationInstance()}. This will
* be available from the initial {@link #onCreate} and
@@ -1464,6 +1460,10 @@
*
* @return Returns the object previously returned by
* {@link #onRetainNonConfigurationInstance()}.
+ *
+ * @deprecated Use the new {@link Fragment} API
+ * {@link Fragment#setRetainInstance(boolean)} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public Object getLastNonConfigurationInstance() {
@@ -1472,10 +1472,6 @@
}
/**
- * @deprecated Use the new {@link Fragment} API
- * {@link Fragment#setRetainInstance(boolean)} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Called by the system, as part of destroying an
* activity due to a configuration change, when it is known that a new
* instance will immediately be created for the new configuration. You
@@ -1522,6 +1518,10 @@
*
* @return Return any Object holding the desired state to propagate to the
* next activity instance.
+ *
+ * @deprecated Use the new {@link Fragment} API
+ * {@link Fragment#setRetainInstance(boolean)} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
public Object onRetainNonConfigurationInstance() {
return null;
@@ -1696,10 +1696,6 @@
}
/**
- * @deprecated Use the new {@link android.content.CursorLoader} class with
- * {@link LoaderManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* This method allows the activity to take care of managing the given
* {@link Cursor}'s lifecycle for you based on the activity's lifecycle.
* That is, when the activity is stopped it will automatically call
@@ -1715,6 +1711,10 @@
*
* @see #managedQuery(android.net.Uri , String[], String, String[], String)
* @see #stopManagingCursor
+ *
+ * @deprecated Use the new {@link android.content.CursorLoader} class with
+ * {@link LoaderManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public void startManagingCursor(Cursor c) {
@@ -1724,10 +1724,6 @@
}
/**
- * @deprecated Use the new {@link android.content.CursorLoader} class with
- * {@link LoaderManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Given a Cursor that was previously given to
* {@link #startManagingCursor}, stop the activity's management of that
* cursor.
@@ -1735,6 +1731,10 @@
* @param c The Cursor that was being managed.
*
* @see #startManagingCursor
+ *
+ * @deprecated Use the new {@link android.content.CursorLoader} class with
+ * {@link LoaderManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public void stopManagingCursor(Cursor c) {
@@ -2746,10 +2746,6 @@
}
/**
- * @deprecated Use the new {@link DialogFragment} class with
- * {@link FragmentManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Callback for creating dialogs that are managed (saved and restored) for you
* by the activity. The default implementation calls through to
* {@link #onCreateDialog(int)} for compatibility.
@@ -2777,6 +2773,10 @@
* @see #showDialog(int, Bundle)
* @see #dismissDialog(int)
* @see #removeDialog(int)
+ *
+ * @deprecated Use the new {@link DialogFragment} class with
+ * {@link FragmentManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
protected Dialog onCreateDialog(int id, Bundle args) {
@@ -2793,10 +2793,6 @@
}
/**
- * @deprecated Use the new {@link DialogFragment} class with
- * {@link FragmentManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Provides an opportunity to prepare a managed dialog before it is being
* shown. The default implementation calls through to
* {@link #onPrepareDialog(int, Dialog)} for compatibility.
@@ -2815,6 +2811,10 @@
* @see #showDialog(int)
* @see #dismissDialog(int)
* @see #removeDialog(int)
+ *
+ * @deprecated Use the new {@link DialogFragment} class with
+ * {@link FragmentManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
protected void onPrepareDialog(int id, Dialog dialog, Bundle args) {
@@ -2822,13 +2822,13 @@
}
/**
- * @deprecated Use the new {@link DialogFragment} class with
- * {@link FragmentManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Simple version of {@link #showDialog(int, Bundle)} that does not
* take any arguments. Simply calls {@link #showDialog(int, Bundle)}
* with null arguments.
+ *
+ * @deprecated Use the new {@link DialogFragment} class with
+ * {@link FragmentManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public final void showDialog(int id) {
@@ -2836,10 +2836,6 @@
}
/**
- * @deprecated Use the new {@link DialogFragment} class with
- * {@link FragmentManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Show a dialog managed by this activity. A call to {@link #onCreateDialog(int, Bundle)}
* will be made with the same id the first time this is called for a given
* id. From thereafter, the dialog will be automatically saved and restored.
@@ -2864,6 +2860,10 @@
* @see #onPrepareDialog(int, Dialog, Bundle)
* @see #dismissDialog(int)
* @see #removeDialog(int)
+ *
+ * @deprecated Use the new {@link DialogFragment} class with
+ * {@link FragmentManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public final boolean showDialog(int id, Bundle args) {
@@ -2887,10 +2887,6 @@
}
/**
- * @deprecated Use the new {@link DialogFragment} class with
- * {@link FragmentManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Dismiss a dialog that was previously shown via {@link #showDialog(int)}.
*
* @param id The id of the managed dialog.
@@ -2902,6 +2898,10 @@
* @see #onPrepareDialog(int, Dialog, Bundle)
* @see #showDialog(int)
* @see #removeDialog(int)
+ *
+ * @deprecated Use the new {@link DialogFragment} class with
+ * {@link FragmentManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public final void dismissDialog(int id) {
@@ -2926,10 +2926,6 @@
}
/**
- * @deprecated Use the new {@link DialogFragment} class with
- * {@link FragmentManager} instead; this is also
- * available on older platforms through the Android compatibility package.
- *
* Removes any internal references to a dialog managed by this Activity.
* If the dialog is showing, it will dismiss it as part of the clean up.
*
@@ -2946,6 +2942,10 @@
* @see #onPrepareDialog(int, Dialog, Bundle)
* @see #showDialog(int)
* @see #dismissDialog(int)
+ *
+ * @deprecated Use the new {@link DialogFragment} class with
+ * {@link FragmentManager} instead; this is also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public final void removeDialog(int id) {
diff --git a/core/java/android/app/ActivityGroup.java b/core/java/android/app/ActivityGroup.java
index fbd78be..78a4dfd 100644
--- a/core/java/android/app/ActivityGroup.java
+++ b/core/java/android/app/ActivityGroup.java
@@ -20,18 +20,16 @@
import android.content.Intent;
import android.os.Bundle;
-import android.util.Log;
/**
+ * A screen that contains and runs multiple embedded activities.
+ *
* @deprecated Use the new {@link Fragment} and {@link FragmentManager} APIs
* instead; these are also
* available on older platforms through the Android compatibility package.
- *
- * A screen that contains and runs multiple embedded activities.
*/
@Deprecated
public class ActivityGroup extends Activity {
- private static final String TAG = "ActivityGroup";
private static final String STATES_KEY = "android:states";
static final String PARENT_NON_CONFIG_INSTANCE_KEY = "android:parent_non_config_instance";
diff --git a/core/java/android/app/ApplicationErrorReport.java b/core/java/android/app/ApplicationErrorReport.java
index 1e012eb..6524c9a 100644
--- a/core/java/android/app/ApplicationErrorReport.java
+++ b/core/java/android/app/ApplicationErrorReport.java
@@ -37,14 +37,17 @@
*
* A report has a type, which is one of
* <ul>
+ * <li> {@link #TYPE_NONE} uninitialized instance of {@link ApplicationErrorReport}.
* <li> {@link #TYPE_CRASH} application crash. Information about the crash
* is stored in {@link #crashInfo}.
* <li> {@link #TYPE_ANR} application not responding. Information about the
* ANR is stored in {@link #anrInfo}.
- * <li> {@link #TYPE_NONE} uninitialized instance of {@link ApplicationErrorReport}.
+ * <li> {@link #TYPE_BATTERY} user reported application is using too much
+ * battery. Information about the battery use is stored in {@link #batteryInfo}.
+ * <li> {@link #TYPE_RUNNING_SERVICE} user reported application is leaving an
+ * unneeded serive running. Information about the battery use is stored in
+ * {@link #runningServiceInfo}.
* </ul>
- *
- * @hide
*/
public class ApplicationErrorReport implements Parcelable {
diff --git a/core/java/android/app/LocalActivityManager.java b/core/java/android/app/LocalActivityManager.java
index 0a6b804..b654a6a 100644
--- a/core/java/android/app/LocalActivityManager.java
+++ b/core/java/android/app/LocalActivityManager.java
@@ -28,15 +28,15 @@
import java.util.Map;
/**
- * @deprecated Use the new {@link Fragment} and {@link FragmentManager} APIs
- * instead; these are also
- * available on older platforms through the Android compatibility package.
- *
* <p>Helper class for managing multiple running embedded activities in the same
* process. This class is not normally used directly, but rather created for
* you as part of the {@link android.app.ActivityGroup} implementation.
*
* @see ActivityGroup
+ *
+ * @deprecated Use the new {@link Fragment} and {@link FragmentManager} APIs
+ * instead; these are also
+ * available on older platforms through the Android compatibility package.
*/
@Deprecated
public class LocalActivityManager {
diff --git a/core/java/android/app/TabActivity.java b/core/java/android/app/TabActivity.java
index 0fd0c2c..882e55a 100644
--- a/core/java/android/app/TabActivity.java
+++ b/core/java/android/app/TabActivity.java
@@ -23,11 +23,6 @@
import android.widget.TextView;
/**
- * @deprecated New applications should use Fragments instead of this class;
- * to continue to run on older devices, you can use the v4 support library
- * which provides a version of the Fragment API that is compatible down to
- * {@link android.os.Build.VERSION_CODES#DONUT}.
- *
* <p>For apps developing against {@link android.os.Build.VERSION_CODES#HONEYCOMB}
* or later, tabs are typically presented in the UI using the new
* {@link ActionBar#newTab() ActionBar.newTab()} and
@@ -49,6 +44,11 @@
* <p>Also see the <a href="{@docRoot}resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabsPager.html">
* Fragment Tabs Pager</a> sample for an example of using the support library's ViewPager to
* allow the user to swipe the content to switch between tabs.</p>
+ *
+ * @deprecated New applications should use Fragments instead of this class;
+ * to continue to run on older devices, you can use the v4 support library
+ * which provides a version of the Fragment API that is compatible down to
+ * {@link android.os.Build.VERSION_CODES#DONUT}.
*/
@Deprecated
public class TabActivity extends ActivityGroup {
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 2f9627a..a6e88cd 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -1132,7 +1132,8 @@
* <p>Input: No data is specified. The bug report is passed in using
* an {@link #EXTRA_BUG_REPORT} field.
* <p>Output: Nothing.
- * @hide
+ *
+ * @see #EXTRA_BUG_REPORT
*/
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_APP_ERROR = "android.intent.action.APP_ERROR";
@@ -1169,6 +1170,80 @@
"android.intent.action.MANAGE_NETWORK_USAGE";
/**
+ * Activity Action: Launch application installer.
+ * <p>
+ * Input: The data must be a content: or file: URI at which the application
+ * can be retrieved. You can optionally supply
+ * {@link #EXTRA_INSTALLER_PACKAGE_NAME}, {@link #EXTRA_NOT_UNKNOWN_SOURCE},
+ * {@link #EXTRA_ALLOW_REPLACE}, and {@link #EXTRA_RETURN_RESULT}.
+ * <p>
+ * Output: If {@link #EXTRA_RETURN_RESULT}, returns whether the install
+ * succeeded.
+ *
+ * @see #EXTRA_INSTALLER_PACKAGE_NAME
+ * @see #EXTRA_NOT_UNKNOWN_SOURCE
+ * @see #EXTRA_RETURN_RESULT
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE";
+
+ /**
+ * Used as a string extra field with {@link #ACTION_INSTALL_PACKAGE} to install a
+ * package. Specifies the installer package name; this package will receive the
+ * {@link #ACTION_APP_ERROR} intent.
+ */
+ public static final String EXTRA_INSTALLER_PACKAGE_NAME
+ = "android.intent.extra.INSTALLER_PACKAGE_NAME";
+
+ /**
+ * Used as a boolean extra field with {@link #ACTION_INSTALL_PACKAGE} to install a
+ * package. Specifies that the application being installed should not be
+ * treated as coming from an unknown source, but as coming from the app
+ * invoking the Intent. For this to work you must start the installer with
+ * startActivityForResult().
+ */
+ public static final String EXTRA_NOT_UNKNOWN_SOURCE
+ = "android.intent.extra.NOT_UNKNOWN_SOURCE";
+
+ /**
+ * Used as a boolean extra field with {@link #ACTION_INSTALL_PACKAGE} to install a
+ * package. Tells the installer UI to skip the confirmation with the user
+ * if the .apk is replacing an existing one.
+ */
+ public static final String EXTRA_ALLOW_REPLACE
+ = "android.intent.extra.ALLOW_REPLACE";
+
+ /**
+ * Used as a boolean extra field with {@link #ACTION_INSTALL_PACKAGE} or
+ * {@link #ACTION_UNINSTALL_PACKAGE}. Specifies that the installer UI should
+ * return to the application the result code of the install/uninstall. The returned result
+ * code will be {@link android.app.Activity#RESULT_OK} on success or
+ * {@link android.app.Activity#RESULT_FIRST_USER} on failure.
+ */
+ public static final String EXTRA_RETURN_RESULT
+ = "android.intent.extra.RETURN_RESULT";
+
+ /**
+ * Package manager install result code. @hide because result codes are not
+ * yet ready to be exposed.
+ */
+ public static final String EXTRA_INSTALL_RESULT
+ = "android.intent.extra.INSTALL_RESULT";
+
+ /**
+ * Activity Action: Launch application uninstaller.
+ * <p>
+ * Input: The data must be a package: URI whose scheme specific part is
+ * the package name of the current installed package to be uninstalled.
+ * You can optionally supply {@link #EXTRA_RETURN_RESULT}.
+ * <p>
+ * Output: If {@link #EXTRA_RETURN_RESULT}, returns whether the install
+ * succeeded.
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_UNINSTALL_PACKAGE = "android.intent.action.UNINSTALL_PACKAGE";
+
+ /**
* A string associated with a {@link #ACTION_UPGRADE_SETUP} activity
* describing the last run version of the platform that was setup.
* @hide
@@ -1287,7 +1362,10 @@
*
* <p class="note">This is a protected intent that can only be sent
* by the system.
+ *
+ * @deprecated This constant has never been used.
*/
+ @Deprecated
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_PACKAGE_INSTALL = "android.intent.action.PACKAGE_INSTALL";
/**
@@ -2380,22 +2458,10 @@
/**
* Used as a parcelable extra field in {@link #ACTION_APP_ERROR}, containing
* the bug report.
- *
- * @hide
*/
public static final String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT";
/**
- * Used as a string extra field when sending an intent to PackageInstaller to install a
- * package. Specifies the installer package name; this package will receive the
- * {@link #ACTION_APP_ERROR} intent.
- *
- * @hide
- */
- public static final String EXTRA_INSTALLER_PACKAGE_NAME
- = "android.intent.extra.INSTALLER_PACKAGE_NAME";
-
- /**
* Used in the extra field in the remote intent. It's astring token passed with the
* remote intent.
*/