Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a382cb81 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 25929 into eclair

* changes:
  Add API to send an ordered sticky broadcast.
parents ac810e53 efa199f0
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
@@ -31714,6 +31714,29 @@
<parameter name="intent" type="android.content.Intent">
</parameter>
</method>
<method name="sendStickyOrderedBroadcast"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="intent" type="android.content.Intent">
</parameter>
<parameter name="resultReceiver" type="android.content.BroadcastReceiver">
</parameter>
<parameter name="scheduler" type="android.os.Handler">
</parameter>
<parameter name="initialCode" type="int">
</parameter>
<parameter name="initialData" type="java.lang.String">
</parameter>
<parameter name="initialExtras" type="android.os.Bundle">
</parameter>
</method>
<method name="setTheme"
 return="void"
 abstract="true"
@@ -33050,6 +33073,29 @@
<parameter name="intent" type="android.content.Intent">
</parameter>
</method>
<method name="sendStickyOrderedBroadcast"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="intent" type="android.content.Intent">
</parameter>
<parameter name="resultReceiver" type="android.content.BroadcastReceiver">
</parameter>
<parameter name="scheduler" type="android.os.Handler">
</parameter>
<parameter name="initialCode" type="int">
</parameter>
<parameter name="initialData" type="java.lang.String">
</parameter>
<parameter name="initialExtras" type="android.os.Bundle">
</parameter>
</method>
<method name="setTheme"
 return="void"
 abstract="false"
@@ -126706,6 +126752,29 @@
<parameter name="intent" type="android.content.Intent">
</parameter>
</method>
<method name="sendStickyOrderedBroadcast"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="intent" type="android.content.Intent">
</parameter>
<parameter name="resultReceiver" type="android.content.BroadcastReceiver">
</parameter>
<parameter name="scheduler" type="android.os.Handler">
</parameter>
<parameter name="initialCode" type="int">
</parameter>
<parameter name="initialData" type="java.lang.String">
</parameter>
<parameter name="initialExtras" type="android.os.Bundle">
</parameter>
</method>
<method name="setTheme"
 return="void"
 abstract="false"
+32 −0
Original line number Diff line number Diff line
@@ -658,6 +658,38 @@ class ApplicationContext extends Context {
        }
    }

    @Override
    public void sendStickyOrderedBroadcast(Intent intent,
            BroadcastReceiver resultReceiver,
            Handler scheduler, int initialCode, String initialData,
            Bundle initialExtras) {
        IIntentReceiver rd = null;
        if (resultReceiver != null) {
            if (mPackageInfo != null) {
                if (scheduler == null) {
                    scheduler = mMainThread.getHandler();
                }
                rd = mPackageInfo.getReceiverDispatcher(
                    resultReceiver, getOuterContext(), scheduler,
                    mMainThread.getInstrumentation(), false);
            } else {
                if (scheduler == null) {
                    scheduler = mMainThread.getHandler();
                }
                rd = new ActivityThread.PackageInfo.ReceiverDispatcher(
                        resultReceiver, getOuterContext(), scheduler, null, false).getIIntentReceiver();
            }
        }
        String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
        try {
            ActivityManagerNative.getDefault().broadcastIntent(
                mMainThread.getApplicationThread(), intent, resolvedType, rd,
                initialCode, initialData, initialExtras, null,
                true, true);
        } catch (RemoteException e) {
        }
    }

    @Override
    public void removeStickyBroadcast(Intent intent) {
        String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
+49 −2
Original line number Diff line number Diff line
@@ -657,8 +657,7 @@ public abstract class Context {
     * supplying your own BroadcastReceiver when calling, which will be
     * treated as a final receiver at the end of the broadcast -- its
     * {@link BroadcastReceiver#onReceive} method will be called with
     * the result values collected from the other receivers.  If you use
     * an <var>resultReceiver</var> with this method, then the broadcast will
     * the result values collected from the other receivers.  The broadcast will
     * be serialized in the same way as calling
     * {@link #sendOrderedBroadcast(Intent, String)}.
     *
@@ -689,6 +688,7 @@ public abstract class Context {
     * @see #sendBroadcast(Intent, String)
     * @see #sendOrderedBroadcast(Intent, String)
     * @see #sendStickyBroadcast(Intent)
     * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)
     * @see android.content.BroadcastReceiver
     * @see #registerReceiver
     * @see android.app.Activity#RESULT_OK
@@ -715,9 +715,56 @@ public abstract class Context {
     * be re-broadcast to future receivers.
     *
     * @see #sendBroadcast(Intent)
     * @see #sendStickyOrderedBroadcast(Intent, BroadcastReceiver, Handler, int, String, Bundle)
     */
    public abstract void sendStickyBroadcast(Intent intent);
    
    /**
     * Version of {@link #sendStickyBroadcast} that allows you to
     * receive data back from the broadcast.  This is accomplished by
     * supplying your own BroadcastReceiver when calling, which will be
     * treated as a final receiver at the end of the broadcast -- its
     * {@link BroadcastReceiver#onReceive} method will be called with
     * the result values collected from the other receivers.  The broadcast will
     * be serialized in the same way as calling
     * {@link #sendOrderedBroadcast(Intent, String)}.
     *
     * <p>Like {@link #sendBroadcast(Intent)}, this method is
     * asynchronous; it will return before
     * resultReceiver.onReceive() is called.  Note that the sticky data
     * stored is only the data you initially supply to the broadcast, not
     * the result of any changes made by the receivers.
     *
     * <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
     *
     * @param intent The Intent to broadcast; all receivers matching this
     *               Intent will receive the broadcast.
     * @param resultReceiver Your own BroadcastReceiver to treat as the final
     *                       receiver of the broadcast.
     * @param scheduler A custom Handler with which to schedule the
     *                  resultReceiver callback; if null it will be
     *                  scheduled in the Context's main thread.
     * @param initialCode An initial value for the result code.  Often
     *                    Activity.RESULT_OK.
     * @param initialData An initial value for the result data.  Often
     *                    null.
     * @param initialExtras An initial value for the result extras.  Often
     *                      null.
     *
     * @see #sendBroadcast(Intent)
     * @see #sendBroadcast(Intent, String)
     * @see #sendOrderedBroadcast(Intent, String)
     * @see #sendStickyBroadcast(Intent)
     * @see android.content.BroadcastReceiver
     * @see #registerReceiver
     * @see android.app.Activity#RESULT_OK
     */
    public abstract void sendStickyOrderedBroadcast(Intent intent,
            BroadcastReceiver resultReceiver,
            Handler scheduler, int initialCode, String initialData,
            Bundle initialExtras);


    /**
     * Remove the data previously sent with {@link #sendStickyBroadcast},
     * so that it is as if the sticky broadcast had never happened.
+10 −0
Original line number Diff line number Diff line
@@ -287,6 +287,16 @@ public class ContextWrapper extends Context {
        mBase.sendStickyBroadcast(intent);
    }

    @Override
    public void sendStickyOrderedBroadcast(
        Intent intent, BroadcastReceiver resultReceiver,
        Handler scheduler, int initialCode, String initialData,
        Bundle initialExtras) {
        mBase.sendStickyOrderedBroadcast(intent,
                resultReceiver, scheduler, initialCode,
                initialData, initialExtras);
    }

    @Override
    public void removeStickyBroadcast(Intent intent) {
        mBase.removeStickyBroadcast(intent);
+7 −0
Original line number Diff line number Diff line
@@ -263,6 +263,13 @@ public class MockContext extends Context {
        throw new UnsupportedOperationException();
    }

    @Override
    public void sendStickyOrderedBroadcast(Intent intent,
            BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData,
           Bundle initialExtras) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void removeStickyBroadcast(Intent intent) {
        throw new UnsupportedOperationException();
Loading