如何从Java Activity调用本地Activity?

5

我知道我们可以按照这个问题描述的方法从另一个Android活动中调用活动。我的问题是,我们是否可以通过意图或使用其他方式从Android活动调用本地活动?如果可以,怎么做?

我的本地活动的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个回答

3

也许你并不需要这个,但以防万一其他人也遇到了同样的问题

你需要将 mynativeactivity.class 更改为 NativeActivity.class 同时,请确保 android_main 调用了 app_dummy()


2
如果我理解正确,您的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更改为派生类的名称。

然后您可以按照所需的方式启动您的本地活动。


0

试试这个:

Intent intent = new Intent(getApplicationContext(), MyNativeActivity.class);
                startActivity(intent);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接