blob: 876baf4034eca9770c93e7466c24c85b6f8cbb4d [file] [log] [blame]
Dennis Shen6fc99352023-08-11 18:12:26 +00001//! example rust crate to be used in AconfigDemoActivity app
2
3use jni::objects::JClass;
4use jni::sys::jstring;
5use jni::JNIEnv;
6
7/// get flag value via static interface
8pub fn get_flag_via_static_interface() -> String {
9 format!(
10 "flag value: {}",
11 if aconfig_demo_flags_rust::append_static_content() { "true" } else { "false" }
12 )
13}
14
15/// get flag value via injection
16pub fn get_flag_via_injection_interface(
17 provider: &aconfig_demo_flags_rust::FlagProvider,
18) -> String {
19 format!("flag value: {}", if provider.append_injected_content() { "true" } else { "false" })
20}
21
22/// printRustFlag function
23#[no_mangle]
24#[allow(unused)]
25pub extern "system" fn Java_com_example_android_aconfig_demo_AconfigDemoActivity_printRustFlag<
26 'local,
27>(
28 mut env: JNIEnv<'local>,
29 class: JClass<'local>,
30) -> jstring {
31 let mut result = String::new();
32
33 result.push_str("flag name : append_static_content\n");
34 result.push_str("use pattern : static method\n");
35 result.push_str(&get_flag_via_static_interface());
36
37 result.push_str("\n\n");
38
39 result.push_str("flag name : append_injected_content\n");
40 result.push_str("use pattern : injection\n");
41 result.push_str(&get_flag_via_injection_interface(&aconfig_demo_flags_rust::PROVIDER));
42
43 let output = env.new_string(result).expect("Couldn't create java string!");
44
45 output.into_raw()
46}