I am trying to programatically select a spinner button from inside an app,
basically mapping DPAD actions to a focus selection.
i.e. select a Spinner inside listview item if the user presses the DPAD key:
Tried a number of things setting the
listview.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS) attributes
Another attempt was to send motion events but motion events appear to be
considered a security issue. [arguuhh, it was so easy in Windows.....]
Funny you can send key events, by motion events appear to be disallowed [see
src code following....]
The instrumentation APIs puts too much overhead on selecting gui controls.
Another possibility is to directly talk to the service manager from an App ?
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();
MotionEvent event = MotionEvent.obtain(downTime, eventTime,
MotionEvent.ACTION_DOWN, x, y, 0);
v.dispatchTouchEvent(event);
///////// src from instrumentation class ///////////
public void sendPointerSync(MotionEvent event) {
validateNotAppThread();
try {
(IWindowManager.Stub.asInterface(ServiceManager
.getService("window"))).injectPointerEvent(event,
true);
} catch (RemoteException e) {
}
}
link to instrumentation class
http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/app/Instrumentation.java.htm
--
You received this message because you are subscribed to the Google Groups
"Android Discuss" 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-discuss?hl=en.