簡體   English   中英

Android:jni中的共享首選項

[英]Android :shared preference in jni

在我的android應用程序中需要訪問兩個應用程序之間的共享內存,我知道android內核不像Linux內核那樣實現共享內存概念,所以我選擇了android中的共享首選項但是我需要通過JNI來實現這個在java部分我試圖在jni中創建一個共享的首選項,但我不能正確地得到它我的代碼

JNIEXPORT jlong JNICALL Java_com_sharedpref1_test_savevalue
  (JNIEnv *env, jobject ctx, jstring store, jstring key, jlong value);



        jobject shared_preferences = (*env)->CallObjectMethod(env, ctx, (*env)->GetMethodID(env (*env)->FindClass(env, "android/content/Context"), "getSharedPreferences", "(L/java/lang/String;I)Landroid/content/SharedPreferences;"),
                    jstore,
                    1);
        jobject preferences_editor = (*env)->CallObjectMethod(env, shared_preferences, (*env)->GetMethodID(env,
                (*env)->FindClass(env, "android/content/SharedPreferences"), "editor", "()Landroid/content/SharedPreferences$Editor;"));

        (*env)->CallObjectMethod(env, preferences_editor, (*env)->GetMethodID(env, 
                (*env)->FindClass(env, "android/content/SharedPreferences/Editor"), "putLong", "(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor;"),
               jkey,
                    value);


    }

誰能知道如何在Android上的jni中完成共享首選項。

您的代碼中可能存在錯誤。 “ctx”不是Android上下文。 相反,它是您調用Java類的Java“this”。 除非您的調用類繼承Context,否則應將Context實例作為附加參數傳遞。

除此之外,您應該拆分並可能錯誤檢查函數調用,以使其更易讀,更容易確定錯誤。 例如
找到這個班級。
如果有效,找到方法。 等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM