Как назвать нативную активность из java активности? - PullRequest
4 голосов
/ 25 июля 2011

Я знаю, что мы можем вызывать активность из другой активности андроида, как описано в этом вопросе. У меня вопрос, можем ли мы назвать нативную активность из активности андроида через намерение или каким-либо другим способом? Если да, то как?

Android.mk файл моей нативной активности следующий, а нативный код активности строится нормально

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := mynativeactivity
LOCAL_SRC_FILES := main.c
LOCAL_LDLIBS    := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)

Я использую этот фрагмент XML для включения своей нативной активности в файл AndroidManifest.Xml. И я думаю, что я здесь ошибаюсь.

 //...rest of the xml including my main java activity here
  <activity android:name="android.app.NativeActivity" android:label="mynativeactivity" >
            <meta-data android:name="android.app.mynativeactivity"                  android:value="native-activity" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Может кто-нибудь сказать мне, как я могу исправить XML выше, чтобы в моем первом java-приложении я мог сделать что-то вроде этого (если это возможно)

 Intent intent = new Intent(this, mynativeactivity.class);
 startActivity(intent);

В настоящее время я не могу скомпилировать этот код, потому что компилятор не может найти mynativeactivity

Ответы [ 3 ]

2 голосов
/ 26 марта 2012

Тебе, вероятно, это не нужно, но на всякий случай кто-то еще наткнется на это

Вам нужно изменить mynativeactivity.class на NativeActivity.class Также убедитесь, что android_main звонки app_dummy()

2 голосов
/ 21 сентября 2011

Если я правильно понимаю, ваш XML должен выглядеть примерно так:

  <activity android:name="YourJavaActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  <activity     android:name="android.app.NativeActivity">
                <meta-data android:name="android.app.lib_name"
                android:value="YourNativeLibraryName" />
    </activity>

И заменить «YourJavaActivity» на имя вашей активности в Java, а «YourNativeLibraryName» на имя создаваемой библиотеки(без префикса 'lib').

Если вы наследуете от NativeActivity, вам также нужно изменить android.app.NativeActivity на имя вашего производного класса.родная деятельность по желанию.

1 голос
/ 18 марта 2015

попробуйте это:

Intent intent = new Intent(getApplicationContext(), MyNativeActivity.class);
                startActivity(intent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...