【问题标题】:How to call native activity from java activity?如何从 java 活动中调用本机活动?
【发布时间】:2011-10-12 12:20:09
【问题描述】:

我知道我们可以从另一个 android 活动中调用活动,如this 问题中所述。我的问题是我们可以通过意图或使用任何其他方式从 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

【问题讨论】:

    标签: java android native-activity


    【解决方案1】:

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

    然后你可以根据需要开始你的原生活动。

    【讨论】:

      【解决方案2】:

      你可能不需要这个,但以防其他人偶然发现这个

      您需要将mynativeactivity.class 更改为NativeActivity.class 另外,确保android_main 调用app_dummy()

      【讨论】:

        【解决方案3】:

        试试这个:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多