You can count on either getting onKeyUp(), onFocusChanged(), or
onWindowFocusChanged().

On Thu, Apr 28, 2011 at 6:50 AM, Nguyen Dat <[email protected]> wrote:

> Dear all,
>
> Relate with question can't dispatch event when change Activity, i have
> litle concern about
> Long press key event have abort while timing change Activity like
> Scenario as bellow:
> [Activit1] -> [Activity2]
>
> Does anyone known which class, method or document indicate while
> change Activity key event have been clear ?
>
> Regards,
> DatNQ
>
> P/s:
> As my remember on old mobile platform writing in C/C++, when change
> Screen, key event stack have clear:
> clearKeyEventQueue()
>
>
>
>
>
> On Mar 12, 8:24 am, Dianne Hackborn <[email protected]> wrote:
> > Correct you can't do this, very much by design.
> >
> > On Fri, Mar 11, 2011 at 7:05 AM, Justin Anderson <[email protected]
> >wrote:
> >
> >
> >
> > > AFAIK that is not possible... I don't think you can redirect events to
> > > other activities that you don't control.  That would be a big security
> risk.
> >
> > > Thanks,
> > > Justin Anderson
> > > MagouyaWare Developer
> > >http://sites.google.com/site/magouyaware
> >
> > > On Fri, Mar 11, 2011 at 3:44 AM, praveen kumar <
> > > [email protected]> wrote:
> >
> > >> Hi,
> > >> I want to override the back key of the Android device to display a
> > >> dialog,
> > >> which consists of two buttons say "Back" and "Exit". when you press
> > >> the Back button
> > >> in dialog it should dispatch back key to the top activity which is
> > >> currently running, i can able to get
> > >> system context by adding following code snippet to
> > >> <android_source_directory>frameworks/
> > >> base/services/java/com/android/server/WindowManagerService.java.
> >
> > >> ActivityThread at = ActivityThread.currentActivityThread();
> > >>        if (at == null) {
> > >>            Looper.prepare();
> > >>            at = ActivityThread.systemMain();
> > >>        }
> > >>        if(at != null){
> > >>            sysContext = at.getSystemContext();
> > >>            Log.d(TAG, "SystemContext = " + sysContext);
> > >>        }
> >
> > >> to display the dialog i added following code
> > >> Dialog dialog = new Dialog(myContext);
> > >> dialog.setContentView(com.android.internal.R.layout.<my-layout-name>);
> > >> dialog.setTitle("Custom Dialog");
> > >> dialog.show();
> >
> > >> Using sysContext, I can able to display toast, and I can able to
> > >> launch the activity, but
> > >> when i try to display a dialog using the same sysContext i got the
> > >> error saying,
> > >> unable to add window "window token is null" it would be great if you
> > >> give any input
> > >> why it is not able to display dialog using sysConttext?
> >
> > >> i added the following code, snippet to get top activity pid
> >
> > >> am = (ActivityManager)
> > >> myContext.getSystemService(Activity.ACTIVITY_SERVICE);
> > >> currentPackageName =
> > >> am.getRunningTasks(1).get(0).topActivity.getPackageName();
> >
> > >> List<ActivityManager.RunningAppProcessInfo> processes;
> > >> processes = am.getRunningAppProcesses();
> > >> for(ActivityManager.RunningAppProcessInfo info: processes) {
> > >>        Log.i("Process:", info.processName);
> > >>        if(currentPackageName.equalsIgnoreCase(info.processName)){
> > >>           Log.i(TAG, "Found !");
> > >>           mpid = info.pid; //pid of top Activity
> > >>           muid = 0; // will be always 0
> > >>         }
> > >> }
> >
> > >> private Handler msgHandler = new Handler(){
> > >>     //this method will handle the calls from other threads.
> > >>    public void handleMessage(Message msg) {
> > >>        int result = -1;
> > >>        switch (msg.what) {
> > >>            case TPMUHelper.DISPATCH_BACK_KEY:
> > >>                Log.d(TAG, "Dispatching Back_Key");
> > >>                code = KeyEvent.KEYCODE_BACK;
> > >>                KeyEvent backEvent = new KeyEvent(downTime,
> > >> eventTime,
> > >> action, code, repeatCount, metaState,
> > >>                deviceId, scancode, KeyEvent.FLAG_FROM_SYSTEM);
> > >>                Log.i(TAG, "PID = " + mpid + ", UID = " +muid);
> > >>                result = dispatchKey(backEvent, mpid, muid);
> > >>                Log.d(TAG, "Dispatch Key Returns = " + result);
> > >>            break;
> > >>      }
> > >>  }
> > >> };
> >
> > >> When i send "DISPATCH_BACK_KEY" message from my-activity "Back" button
> > >> press event, it comes here
> > >> and dispatch back key, dispatchkey(KeyEvent event, int pid, int uid)
> > >> returns '1', i am success with
> > >> this, however currently running activity is not getting closed. simply
> > >> what i need is, i want to
> > >> send back key to whichever the activity is currently running, (system
> > >> application or 3rd party
> > >> application). input regarding the same is appreciated.
> >
> > >> Thanks & Regards
> > >> Praveen
> >
> > >> --
> > >> You received this message because you are subscribed to the Google
> > >> Groups "Android Developers" group.
> > >> To post to this group, send email to
> [email protected]
> > >> To unsubscribe from this group, send email to
> > >> [email protected]
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/android-developers?hl=en
> >
> > >  --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-developers?hl=en
> >
> > --
> > Dianne Hackborn
> > Android framework engineer
> > [email protected]
> >
> > Note: please don't send private questions to me, as I don't have time to
> > provide private support, and so won't reply to such e-mails.  All such
> > questions should be posted on public forums, where I and others can see
> and
> > answer them.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Dianne Hackborn
Android framework engineer
[email protected]

Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails.  All such
questions should be posted on public forums, where I and others can see and
answer them.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to