Wiki Page Content

Differences between revisions 1 and 2
Revision 1 as of 2013-11-16 18:31:52
Size: 2040
Editor: Julien
Comment: Initial documentation of the function
Revision 2 as of 2013-12-07 13:20:16
Size: 2038
Comment: Changed return type, see SDL_system.h, real type still in description.
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:
jobject SDL_AndroidGetActivity(void) void* SDL_AndroidGetActivity(void)
Line 16: Line 16:
Returns the jobject representing the instance of the activity class of the Android application, or NULL on error. Returns the jobject representing the instance of the Activity class of the Android application, or NULL on error.

DRAFT

SDL_AndroidGetActivity

Use this function to retrieve the Java instance of the activity class in an Android application.

Syntax

void* SDL_AndroidGetActivity(void)

Return Value

Returns the jobject representing the instance of the Activity class of the Android application, or NULL on error.

The jobject returned by the function is a local reference and must be released by the caller. See the PushLocalFrame()/PopLocalFrame() or DeleteLocalRef() functions of the Java native interface (in Oracle's documentation).

Code Examples

// Calls the void MyActivity.showHome() method of the Java instance of the activity.
void showHome(void)
{
    // retrieve the JNI environment.
    JNIEnv* env = (JNIEnv*)SDL_AndroidGetJNIEnv();

    // retrieve the Java instance of the SDLActivity
    jobject activity = (jobject)SDL_AndroidGetActivity();

    // find the Java class of the activity. It should be SDLActivity or a subclass of it.
    jclass clazz( env->GetObjectClass(activity) );

    // find the identifier of the method to call
    jmethodID method_id = env->GetMethodID( clazz, "showHome", "()V" );

    // effectively call the Java method
    env->CallVoidMethod( activity, method_id );
    
    // clean up the local references.
    env->DeleteLocalRef(activity);
}

Remarks

The prototype of the function in SDL's code actually declares a void* return type, even if the implementation returns a jobject. The rationale being that it allows not to include jni.h in the headers of the SDL.

Version

This function is available in SDL 2.0.0


CategoryAPI, CategoryHeader

None: SDL_AndroidGetActivity (last edited 2016-11-20 22:02:28 by PhilippWiesemann)

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit