Search in sources :

Example 6 with BaseDexClassLoader

use of dalvik.system.BaseDexClassLoader in project platform_frameworks_base by android.

the class NativeActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    String libname = "main";
    String funcname = "ANativeActivity_onCreate";
    ActivityInfo ai;
    mIMM = getSystemService(InputMethodManager.class);
    getWindow().takeSurface(this);
    getWindow().takeInputQueue(this);
    getWindow().setFormat(PixelFormat.RGB_565);
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
    mNativeContentView = new NativeContentView(this);
    mNativeContentView.mActivity = this;
    setContentView(mNativeContentView);
    mNativeContentView.requestFocus();
    mNativeContentView.getViewTreeObserver().addOnGlobalLayoutListener(this);
    try {
        ai = getPackageManager().getActivityInfo(getIntent().getComponent(), PackageManager.GET_META_DATA);
        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);
    }
    BaseDexClassLoader classLoader = (BaseDexClassLoader) getClassLoader();
    String path = classLoader.findLibrary(libname);
    if (path == null) {
        throw new IllegalArgumentException("Unable to find native library " + libname + " using classloader: " + classLoader.toString());
    }
    byte[] nativeSavedState = savedInstanceState != null ? savedInstanceState.getByteArray(KEY_NATIVE_SAVED_STATE) : null;
    mNativeHandle = loadNativeCode(path, funcname, Looper.myQueue(), getAbsolutePath(getFilesDir()), getAbsolutePath(getObbDir()), getAbsolutePath(getExternalFilesDir(null)), Build.VERSION.SDK_INT, getAssets(), nativeSavedState, classLoader, classLoader.getLdLibraryPath());
    if (mNativeHandle == 0) {
        throw new UnsatisfiedLinkError("Unable to load native library \"" + path + "\": " + getDlError());
    }
    super.onCreate(savedInstanceState);
}
Also used : ActivityInfo(android.content.pm.ActivityInfo) BaseDexClassLoader(dalvik.system.BaseDexClassLoader) PackageManager(android.content.pm.PackageManager) InputMethodManager(android.view.inputmethod.InputMethodManager)

Aggregations

BaseDexClassLoader (dalvik.system.BaseDexClassLoader)6 ActivityInfo (android.content.pm.ActivityInfo)5 PackageManager (android.content.pm.PackageManager)5 InputMethodManager (android.view.inputmethod.InputMethodManager)5 File (java.io.File)1