java.lang.NoSuchFieldError: no “Ljava/lang/String;” field JNI
up vote
0
down vote
favorite
Good day. Please tell me what I'm doing wrong. Implemented getting keys from android / provider / Settings $ System. Keys like ACCELEROMETER_ROTATION look no problem (those described https://developer.android.com/reference/android/provider/Settings.System) but such as sms_delivered_sound, he refuses to search. Writes an error.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.woodman.testlibsettingsv2, PID: 31133
java.lang.NoSuchFieldError: no "Ljava/lang/String;" field "sms_delivered_sound" in class "Landroid/provider/Settings$System;" or its superclasses
at com.example.woodman.testlibsettingsv2.frmMain.GetSystemKyesString(Native Method)
at com.example.woodman.testlibsettingsv2.frmMain.onCreate(frmMain.java:32)
at android.app.Activity.performCreate(Activity.java:7210)
at android.app.Activity.performCreate(Activity.java:7201)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
code
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_woodman_testlibsettingsv2_frmMain_GetSystemKyesString(JNIEnv *env,
jobject instance,
jstring key_Name_) {
const char *key_Name = env->GetStringUTFChars(key_Name_, 0);
// TODO
jclass activityThread = env->FindClass("android/app/ActivityThread");
jmethodID currentActivityThread = env->GetStaticMethodID(activityThread,
"currentActivityThread",
"()Landroid/app/ActivityThread;");
jobject at = env->CallStaticObjectMethod(activityThread, currentActivityThread);
jmethodID getApplication = env->GetMethodID(activityThread, "getApplication",
"()Landroid/app/Application;");
jobject context = env->CallObjectMethod(at, getApplication);
jclass c_settings_system = env->FindClass("android/provider/Settings$System");
jclass c_context = env->FindClass("android/content/Context");
if (c_settings_system == NULL || c_context == NULL) {
return NULL;
}
jmethodID m_get_content_resolver = env->GetMethodID(c_context, "getContentResolver",
"()Landroid/content/ContentResolver;");
if (m_get_content_resolver == NULL) {
return NULL;
}
jfieldID f_android_string_key = env->GetStaticFieldID(c_settings_system,
key_Name,
"Ljava/lang/String;");
if (f_android_string_key == NULL) {
return NULL;
}
jstring s_android_string_key = (jstring) env->GetStaticObjectField(c_settings_system,
f_android_string_key);
jobject o_content_resolver;
o_content_resolver = env->CallObjectMethod(context,
m_get_content_resolver);
if (o_content_resolver == NULL || s_android_string_key == NULL) {
return NULL;
}
jmethodID m_get_string = env->GetStaticMethodID(c_settings_system, "getString",
"(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;");
if (m_get_string == NULL) {
return NULL;
}
jstring string_key = (jstring) env->CallStaticObjectMethod(c_settings_system,
m_get_string,
o_content_resolver,
s_android_string_key);
return string_key;
}
thank
android c++ android-ndk jni
add a comment |
up vote
0
down vote
favorite
Good day. Please tell me what I'm doing wrong. Implemented getting keys from android / provider / Settings $ System. Keys like ACCELEROMETER_ROTATION look no problem (those described https://developer.android.com/reference/android/provider/Settings.System) but such as sms_delivered_sound, he refuses to search. Writes an error.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.woodman.testlibsettingsv2, PID: 31133
java.lang.NoSuchFieldError: no "Ljava/lang/String;" field "sms_delivered_sound" in class "Landroid/provider/Settings$System;" or its superclasses
at com.example.woodman.testlibsettingsv2.frmMain.GetSystemKyesString(Native Method)
at com.example.woodman.testlibsettingsv2.frmMain.onCreate(frmMain.java:32)
at android.app.Activity.performCreate(Activity.java:7210)
at android.app.Activity.performCreate(Activity.java:7201)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
code
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_woodman_testlibsettingsv2_frmMain_GetSystemKyesString(JNIEnv *env,
jobject instance,
jstring key_Name_) {
const char *key_Name = env->GetStringUTFChars(key_Name_, 0);
// TODO
jclass activityThread = env->FindClass("android/app/ActivityThread");
jmethodID currentActivityThread = env->GetStaticMethodID(activityThread,
"currentActivityThread",
"()Landroid/app/ActivityThread;");
jobject at = env->CallStaticObjectMethod(activityThread, currentActivityThread);
jmethodID getApplication = env->GetMethodID(activityThread, "getApplication",
"()Landroid/app/Application;");
jobject context = env->CallObjectMethod(at, getApplication);
jclass c_settings_system = env->FindClass("android/provider/Settings$System");
jclass c_context = env->FindClass("android/content/Context");
if (c_settings_system == NULL || c_context == NULL) {
return NULL;
}
jmethodID m_get_content_resolver = env->GetMethodID(c_context, "getContentResolver",
"()Landroid/content/ContentResolver;");
if (m_get_content_resolver == NULL) {
return NULL;
}
jfieldID f_android_string_key = env->GetStaticFieldID(c_settings_system,
key_Name,
"Ljava/lang/String;");
if (f_android_string_key == NULL) {
return NULL;
}
jstring s_android_string_key = (jstring) env->GetStaticObjectField(c_settings_system,
f_android_string_key);
jobject o_content_resolver;
o_content_resolver = env->CallObjectMethod(context,
m_get_content_resolver);
if (o_content_resolver == NULL || s_android_string_key == NULL) {
return NULL;
}
jmethodID m_get_string = env->GetStaticMethodID(c_settings_system, "getString",
"(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;");
if (m_get_string == NULL) {
return NULL;
}
jstring string_key = (jstring) env->CallStaticObjectMethod(c_settings_system,
m_get_string,
o_content_resolver,
s_android_string_key);
return string_key;
}
thank
android c++ android-ndk jni
1
The documentation you linked shows no evidence of such a field existing. Is it possible you wanted to call thegetString(ContentResolver, String)
method of settings.System instead?
– Botje
4 hours ago
below answered.
– Алексей
3 hours ago
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Good day. Please tell me what I'm doing wrong. Implemented getting keys from android / provider / Settings $ System. Keys like ACCELEROMETER_ROTATION look no problem (those described https://developer.android.com/reference/android/provider/Settings.System) but such as sms_delivered_sound, he refuses to search. Writes an error.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.woodman.testlibsettingsv2, PID: 31133
java.lang.NoSuchFieldError: no "Ljava/lang/String;" field "sms_delivered_sound" in class "Landroid/provider/Settings$System;" or its superclasses
at com.example.woodman.testlibsettingsv2.frmMain.GetSystemKyesString(Native Method)
at com.example.woodman.testlibsettingsv2.frmMain.onCreate(frmMain.java:32)
at android.app.Activity.performCreate(Activity.java:7210)
at android.app.Activity.performCreate(Activity.java:7201)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
code
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_woodman_testlibsettingsv2_frmMain_GetSystemKyesString(JNIEnv *env,
jobject instance,
jstring key_Name_) {
const char *key_Name = env->GetStringUTFChars(key_Name_, 0);
// TODO
jclass activityThread = env->FindClass("android/app/ActivityThread");
jmethodID currentActivityThread = env->GetStaticMethodID(activityThread,
"currentActivityThread",
"()Landroid/app/ActivityThread;");
jobject at = env->CallStaticObjectMethod(activityThread, currentActivityThread);
jmethodID getApplication = env->GetMethodID(activityThread, "getApplication",
"()Landroid/app/Application;");
jobject context = env->CallObjectMethod(at, getApplication);
jclass c_settings_system = env->FindClass("android/provider/Settings$System");
jclass c_context = env->FindClass("android/content/Context");
if (c_settings_system == NULL || c_context == NULL) {
return NULL;
}
jmethodID m_get_content_resolver = env->GetMethodID(c_context, "getContentResolver",
"()Landroid/content/ContentResolver;");
if (m_get_content_resolver == NULL) {
return NULL;
}
jfieldID f_android_string_key = env->GetStaticFieldID(c_settings_system,
key_Name,
"Ljava/lang/String;");
if (f_android_string_key == NULL) {
return NULL;
}
jstring s_android_string_key = (jstring) env->GetStaticObjectField(c_settings_system,
f_android_string_key);
jobject o_content_resolver;
o_content_resolver = env->CallObjectMethod(context,
m_get_content_resolver);
if (o_content_resolver == NULL || s_android_string_key == NULL) {
return NULL;
}
jmethodID m_get_string = env->GetStaticMethodID(c_settings_system, "getString",
"(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;");
if (m_get_string == NULL) {
return NULL;
}
jstring string_key = (jstring) env->CallStaticObjectMethod(c_settings_system,
m_get_string,
o_content_resolver,
s_android_string_key);
return string_key;
}
thank
android c++ android-ndk jni
Good day. Please tell me what I'm doing wrong. Implemented getting keys from android / provider / Settings $ System. Keys like ACCELEROMETER_ROTATION look no problem (those described https://developer.android.com/reference/android/provider/Settings.System) but such as sms_delivered_sound, he refuses to search. Writes an error.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.woodman.testlibsettingsv2, PID: 31133
java.lang.NoSuchFieldError: no "Ljava/lang/String;" field "sms_delivered_sound" in class "Landroid/provider/Settings$System;" or its superclasses
at com.example.woodman.testlibsettingsv2.frmMain.GetSystemKyesString(Native Method)
at com.example.woodman.testlibsettingsv2.frmMain.onCreate(frmMain.java:32)
at android.app.Activity.performCreate(Activity.java:7210)
at android.app.Activity.performCreate(Activity.java:7201)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
code
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_woodman_testlibsettingsv2_frmMain_GetSystemKyesString(JNIEnv *env,
jobject instance,
jstring key_Name_) {
const char *key_Name = env->GetStringUTFChars(key_Name_, 0);
// TODO
jclass activityThread = env->FindClass("android/app/ActivityThread");
jmethodID currentActivityThread = env->GetStaticMethodID(activityThread,
"currentActivityThread",
"()Landroid/app/ActivityThread;");
jobject at = env->CallStaticObjectMethod(activityThread, currentActivityThread);
jmethodID getApplication = env->GetMethodID(activityThread, "getApplication",
"()Landroid/app/Application;");
jobject context = env->CallObjectMethod(at, getApplication);
jclass c_settings_system = env->FindClass("android/provider/Settings$System");
jclass c_context = env->FindClass("android/content/Context");
if (c_settings_system == NULL || c_context == NULL) {
return NULL;
}
jmethodID m_get_content_resolver = env->GetMethodID(c_context, "getContentResolver",
"()Landroid/content/ContentResolver;");
if (m_get_content_resolver == NULL) {
return NULL;
}
jfieldID f_android_string_key = env->GetStaticFieldID(c_settings_system,
key_Name,
"Ljava/lang/String;");
if (f_android_string_key == NULL) {
return NULL;
}
jstring s_android_string_key = (jstring) env->GetStaticObjectField(c_settings_system,
f_android_string_key);
jobject o_content_resolver;
o_content_resolver = env->CallObjectMethod(context,
m_get_content_resolver);
if (o_content_resolver == NULL || s_android_string_key == NULL) {
return NULL;
}
jmethodID m_get_string = env->GetStaticMethodID(c_settings_system, "getString",
"(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;");
if (m_get_string == NULL) {
return NULL;
}
jstring string_key = (jstring) env->CallStaticObjectMethod(c_settings_system,
m_get_string,
o_content_resolver,
s_android_string_key);
return string_key;
}
thank
android c++ android-ndk jni
android c++ android-ndk jni
asked 5 hours ago
Алексей
1
1
1
The documentation you linked shows no evidence of such a field existing. Is it possible you wanted to call thegetString(ContentResolver, String)
method of settings.System instead?
– Botje
4 hours ago
below answered.
– Алексей
3 hours ago
add a comment |
1
The documentation you linked shows no evidence of such a field existing. Is it possible you wanted to call thegetString(ContentResolver, String)
method of settings.System instead?
– Botje
4 hours ago
below answered.
– Алексей
3 hours ago
1
1
The documentation you linked shows no evidence of such a field existing. Is it possible you wanted to call the
getString(ContentResolver, String)
method of settings.System instead?– Botje
4 hours ago
The documentation you linked shows no evidence of such a field existing. Is it possible you wanted to call the
getString(ContentResolver, String)
method of settings.System instead?– Botje
4 hours ago
below answered.
– Алексей
3 hours ago
below answered.
– Алексей
3 hours ago
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
execution of the settings list system command. It shows the number of keys.
if you run the settings get system sms_delivered_sound command, it returns file: ///system/media/audio/notifications/MessageSent.ogg. but if I try to get the value of this key through getString, I get an error
Is that an answer that satisfies you?
– Alex Cohn
2 hours ago
Not. This is an explanation of my question. I still haven't fully figured out how to add the right kometaria. I'm new here
– Алексей
2 hours ago
1) Do not post this as an answer unless it actually answers your question. Edit your question instead. 2) Do not post screenshots of error logs or code. Post such information as text instead.
– Michael
57 mins ago
Your code tries to look upsms_delivered_sound
as a FIELD on the Settings object. That is like doingsettings.sms_delivered_sound
in Java. My comment was "I think you want to dosettings.getString(cr, "sms_delivered_sound")
instead.
– Botje
35 mins ago
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
execution of the settings list system command. It shows the number of keys.
if you run the settings get system sms_delivered_sound command, it returns file: ///system/media/audio/notifications/MessageSent.ogg. but if I try to get the value of this key through getString, I get an error
Is that an answer that satisfies you?
– Alex Cohn
2 hours ago
Not. This is an explanation of my question. I still haven't fully figured out how to add the right kometaria. I'm new here
– Алексей
2 hours ago
1) Do not post this as an answer unless it actually answers your question. Edit your question instead. 2) Do not post screenshots of error logs or code. Post such information as text instead.
– Michael
57 mins ago
Your code tries to look upsms_delivered_sound
as a FIELD on the Settings object. That is like doingsettings.sms_delivered_sound
in Java. My comment was "I think you want to dosettings.getString(cr, "sms_delivered_sound")
instead.
– Botje
35 mins ago
add a comment |
up vote
0
down vote
execution of the settings list system command. It shows the number of keys.
if you run the settings get system sms_delivered_sound command, it returns file: ///system/media/audio/notifications/MessageSent.ogg. but if I try to get the value of this key through getString, I get an error
Is that an answer that satisfies you?
– Alex Cohn
2 hours ago
Not. This is an explanation of my question. I still haven't fully figured out how to add the right kometaria. I'm new here
– Алексей
2 hours ago
1) Do not post this as an answer unless it actually answers your question. Edit your question instead. 2) Do not post screenshots of error logs or code. Post such information as text instead.
– Michael
57 mins ago
Your code tries to look upsms_delivered_sound
as a FIELD on the Settings object. That is like doingsettings.sms_delivered_sound
in Java. My comment was "I think you want to dosettings.getString(cr, "sms_delivered_sound")
instead.
– Botje
35 mins ago
add a comment |
up vote
0
down vote
up vote
0
down vote
execution of the settings list system command. It shows the number of keys.
if you run the settings get system sms_delivered_sound command, it returns file: ///system/media/audio/notifications/MessageSent.ogg. but if I try to get the value of this key through getString, I get an error
execution of the settings list system command. It shows the number of keys.
if you run the settings get system sms_delivered_sound command, it returns file: ///system/media/audio/notifications/MessageSent.ogg. but if I try to get the value of this key through getString, I get an error
answered 3 hours ago
Алексей
1
1
Is that an answer that satisfies you?
– Alex Cohn
2 hours ago
Not. This is an explanation of my question. I still haven't fully figured out how to add the right kometaria. I'm new here
– Алексей
2 hours ago
1) Do not post this as an answer unless it actually answers your question. Edit your question instead. 2) Do not post screenshots of error logs or code. Post such information as text instead.
– Michael
57 mins ago
Your code tries to look upsms_delivered_sound
as a FIELD on the Settings object. That is like doingsettings.sms_delivered_sound
in Java. My comment was "I think you want to dosettings.getString(cr, "sms_delivered_sound")
instead.
– Botje
35 mins ago
add a comment |
Is that an answer that satisfies you?
– Alex Cohn
2 hours ago
Not. This is an explanation of my question. I still haven't fully figured out how to add the right kometaria. I'm new here
– Алексей
2 hours ago
1) Do not post this as an answer unless it actually answers your question. Edit your question instead. 2) Do not post screenshots of error logs or code. Post such information as text instead.
– Michael
57 mins ago
Your code tries to look upsms_delivered_sound
as a FIELD on the Settings object. That is like doingsettings.sms_delivered_sound
in Java. My comment was "I think you want to dosettings.getString(cr, "sms_delivered_sound")
instead.
– Botje
35 mins ago
Is that an answer that satisfies you?
– Alex Cohn
2 hours ago
Is that an answer that satisfies you?
– Alex Cohn
2 hours ago
Not. This is an explanation of my question. I still haven't fully figured out how to add the right kometaria. I'm new here
– Алексей
2 hours ago
Not. This is an explanation of my question. I still haven't fully figured out how to add the right kometaria. I'm new here
– Алексей
2 hours ago
1) Do not post this as an answer unless it actually answers your question. Edit your question instead. 2) Do not post screenshots of error logs or code. Post such information as text instead.
– Michael
57 mins ago
1) Do not post this as an answer unless it actually answers your question. Edit your question instead. 2) Do not post screenshots of error logs or code. Post such information as text instead.
– Michael
57 mins ago
Your code tries to look up
sms_delivered_sound
as a FIELD on the Settings object. That is like doing settings.sms_delivered_sound
in Java. My comment was "I think you want to do settings.getString(cr, "sms_delivered_sound")
instead.– Botje
35 mins ago
Your code tries to look up
sms_delivered_sound
as a FIELD on the Settings object. That is like doing settings.sms_delivered_sound
in Java. My comment was "I think you want to do settings.getString(cr, "sms_delivered_sound")
instead.– Botje
35 mins ago
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53371439%2fjava-lang-nosuchfielderror-no-ljava-lang-string-field-jni%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
The documentation you linked shows no evidence of such a field existing. Is it possible you wanted to call the
getString(ContentResolver, String)
method of settings.System instead?– Botje
4 hours ago
below answered.
– Алексей
3 hours ago