diff options
| author | Dianne Hackborn <hackbod@google.com> | 2010-10-24 18:33:36 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-24 18:33:36 -0700 |
| commit | 236568999411214ef440cabc6d12e3bf5f19d8f4 (patch) | |
| tree | bd7f442be4bc3b6ebbdd7c5ca0dbadc081033a8c /core/java/android | |
| parent | 860c2df4132a2a0be9bcb0e91bfb7e79588c000f (diff) | |
| parent | e21d91c694e828e6285cc50e79b2a6be6e8c692b (diff) | |
Merge "Fix issue #3126018: No way to specify NativeActivity's native method" into gingerbread
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/NativeActivity.java | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/core/java/android/app/NativeActivity.java b/core/java/android/app/NativeActivity.java index c98128cbb255..de36f273d62c 100644 --- a/core/java/android/app/NativeActivity.java +++ b/core/java/android/app/NativeActivity.java @@ -5,7 +5,6 @@ import com.android.internal.view.IInputMethodSession; import android.content.Context; import android.content.pm.ActivityInfo; -import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.content.res.Configuration; @@ -48,9 +47,22 @@ import java.lang.ref.WeakReference; */ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, InputQueue.Callback, OnGlobalLayoutListener { + /** + * Optional meta-that can be in the manifest for this component, specifying + * the name of the native shared library to load. If not specified, + * "main" is used. + */ public static final String META_DATA_LIB_NAME = "android.app.lib_name"; - public static final String KEY_NATIVE_SAVED_STATE = "android:native_state"; + /** + * Optional meta-that can be in the manifest for this component, specifying + * the name of the main entry point for this native activity in the + * {@link #META_DATA_LIB_NAME} native code. If not specified, + * "ANativeActivity_onCreate" is used. + */ + public static final String META_DATA_FUNC_NAME = "android.app.func_name"; + + private static final String KEY_NATIVE_SAVED_STATE = "android:native_state"; private NativeContentView mNativeContentView; private InputMethodManager mIMM; @@ -71,7 +83,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, private boolean mDestroyed; - private native int loadNativeCode(String path, MessageQueue queue, + private native int loadNativeCode(String path, String funcname, MessageQueue queue, String internalDataPath, String externalDataPath, int sdkVersion, AssetManager assetMgr, byte[] savedState); private native void unloadNativeCode(int handle); @@ -131,6 +143,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, @Override protected void onCreate(Bundle savedInstanceState) { String libname = "main"; + String funcname = "ANativeActivity_onCreate"; ActivityInfo ai; mIMM = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); @@ -155,6 +168,8 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, if (ai.metaData != null) { String ln = ai.metaData.getString(META_DATA_LIB_NAME); if (ln != null) libname = ln; + ln = ai.metaData.getString(META_DATA_FUNC_NAME); + if (ln != null) funcname = ln; } } catch (PackageManager.NameNotFoundException e) { throw new RuntimeException("Error getting activity info", e); @@ -175,7 +190,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2, byte[] nativeSavedState = savedInstanceState != null ? savedInstanceState.getByteArray(KEY_NATIVE_SAVED_STATE) : null; - mNativeHandle = loadNativeCode(path, Looper.myQueue(), + mNativeHandle = loadNativeCode(path, funcname, Looper.myQueue(), getFilesDir().toString(), Environment.getExternalStorageAppFilesDirectory(ai.packageName).toString(), Build.VERSION.SDK_INT, getAssets(), nativeSavedState); |
