2011-07-25 35 views
4

我知道我們可以從另一個android活動調用活動,如this問題中所述。我的問題是,我們可以通過一個意圖或通過任何其他方式調用android活動的本地活動嗎?如果是,如何?我的祖國活動的如何從java活動調用本地活動?

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

回答

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> 

並用您的Java活動名稱替換'YourJavaActivity','YourNativeLibraryName'替換爲創建的庫名稱(不帶'lib'前綴)。

如果您從NativeActivity派生,那麼您還需要將android.app.NativeActivity更改爲派生類的名稱。

然後,您可以根據需要開始您的本地活動。

2

你可能不需要這個,只是在這個

情況下別人絆倒你需要改變mynativeactivity.classNativeActivity.class 此外,確保android_main電話app_dummy()

1

試試這個:

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