I can't speak for the OP, though he should do the same, but as for me, I will avoid calling ActivityThread methods on your say so. But what DID you mean by " Don't call Looper.prepare() on a thread you don't own"? In the OP's snippet, he created 'at', and on that thread, he calls Looper.prepare(). So he does own it.
Or is there some subtlety to these threads that the standard Java security model does not apply, and he does not have the necessary permissions to prepare a Looper on the thread he himself created? On Mar 11, 12:45 pm, Dianne Hackborn <[email protected]> wrote: > (1) ActivityThread is not a part of the SDK and you should absolutely not be > touching it. > (2) Don't call Looper.prepare() on a thread you don't own. > (3) WTF. > > > > On Thu, Mar 10, 2011 at 5:10 AM, Praveen <[email protected]> wrote: > > Hi, > > I am trying to dispatch key-event to other activity from a dialog, I > > am trying to add a dialog in WindowManagerSerivce.java file in > > frameworks/base/services/java/com/android/server, to display this > > dialog i am using the following snippet to get SystemContext > > > ActivityThread at = ActivityThread.currentActivityThread(); > > if (at == null) { > > Looper.prepare(); > > at = ActivityThread.systemMain(); > > } > > if(at != null){ > > sysContext = at.getSystemContext(); > > Log.d(TAG, "SystemContext = " + sysContext); > > } > > Dialog dialog = new Dialog(sysContext); > > > dialog.setContentView(com.android.internal.R.layout.<my_Custom_layout>); > > dialog.setTitle("Custom Dialog"); > > dialog.show(); > > > but i can't able to display the dialog > > > When i tried to launch activity as a dialog (@android:style/ > > Theme.Dialog) using intent, for the same, activity is displayed as > > dialog. fine, now what i am trying is i want to dispatch keyevent when > > you press a button in the dialog displayed, i am using handler to pass > > the messages to WindowManagerService, where it will dispatch the > > keyevent and even i get the pid of top activity and pass the same to > > dispatchKey() method in WindowManagerService.java, dispatchKey > > returns '1' which means the key is dispatched successfully. what > > actually i am doing is when you press a button in the dialog, i will > > pass a message to handler implemented in WindowManagerService.java > > say, DISPATCH_BACK_KEY, and i am able to get proper PID from the > > activity manager > > > packageName = > > 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; > > } > > } > > public void handleMessage(Message msg) { > > switch (msg.what) { > > > case 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; > > } > > > Key is dispatched successfully, but the activity beyond the my-dialog > > displayed is still visible. please help me how can i proceed to > > dispatch back key to the activity beyond my-dialog.. > > > Thanks in advance > > > -- > > 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

