https://juejin.cn/post/
-
Java语言如何调用C代码,以C语言验证用户名和密码为例 -
C语言如何调用Java代码,以C语言调用Java方法为例 -
如何使用C语言,实现简单实用的功能,以APP卸载反馈为例
public native int checkUser(String name, String pass);
讯享网
讯享网
#include <jni.h>
JNIEXPORT jint JNICALL
Java_jnidemo_hlq_com_jnidemo_JNI_checkUser(JNIEnv *env, jobject instance, jstring name_,
jstring pass_) {
const char *name = (env)->GetStringUTFChars(name_, 0);
const char *pass = (env)->GetStringUTFChars(pass_, 0);
// TODO
(env)->ReleaseStringUTFChars( name_, name);
(env)->ReleaseStringUTFChars( pass_, pass);
}
const char *name = (env)->GetStringUTFChars(name_, 0);
讯享网
const char *name = (*env)->GetStringUTFChars(env,name_, 0);
add_library( # Sets the name of the library.
checkuser
SHARED
src/main/cpp/cheruser.cpp
)
target_link_libraries( # Specifies the target library.
checkuser
# Links the target library to the log library
# included in the NDK.
${log-lib} )
static {
System.loadLibrary("checkuser");
}
const char *name = (env)->GetStringUTFChars(name_, 0);
const char *pass = (env)->GetStringUTFChars(pass_, 0);
const char *tureName = "name";
const char *turePass = "123";
#include <string.h>
if (strcmp(name,tureName) == 0 && strcasecmp(pass,turePass) == 0){
return 1;
} else{
return 0;
}
java基础 安卓开发

if (new JNI().checkUser("name", "123") == 1) {
Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "登陆shibai", Toast.LENGTH_LONG).show();
}
public int sum(int i, int j) {
Log.d("---", "我是java 我被c调用了" + (i + j));
return i + j;
}
public native String testHello();
JNIEXPORT jstring JNICALL
Java_jnidemo_hlq_com_jnidemo_JNI_testHello(JNIEnv *env, jobject) {
return (env)->NewStringUTF("huanglinqing");
}
const char *className = "jnidemo/hlq/com/jnidemo/JNI";
const char *sum = "sum";
jclass jclass1 = env->FindClass(className);
jobject jobject1 = env->AllocObject(jclass1);
jmethodID jmethodID1 = env->GetMethodID(jclass1, sum,"(II)I");
jint value = env->CallIntMethod(jobject1, jmethodID1,1,2);
const char *className = "jnidemo/hlq/com/jnidemo/JNI";
const char *sum = "sum";
jclass jclass1 = env->FindClass(className);
jmethodID jmethodID1 = env->GetMethodID(jclass1, sum,"(II)I");
jobject jobject1 = env->AllocObject(jclass1);
jint value = env->CallIntMethod(jobject1, jmethodID1,1,2);
printf("c 运行结果为 %d",value);
new JNI().testHello();
public native void uninstall(String packageName, int versionCode);
#include "unistd.h"
int code = fork();
if (code >= 0) {
int flag = 1;
while (flag) {
sleep(1);
FILE *file;
try {
try {
file = fopen("/data/data/jnidemo.hlq.com.jnidemo", "rt");
} catch (_JNIEnv env) {
LOGD("--- %s", "i一场了");
}
if (file == NULL) {
flag = 0;
if (versionCode < 17) {
execlp("am", "am", "start", "-a", "android.intent.action.VIEW", "-d",
"http://baidu.com", NULL);
} else {
execlp("am", "am", "start", "--user", "0", "-a",
"android.intent.action.VIEW",
"-d", "http://baidu.com", (char *) NULL);
}
} else {
fclose(file);
LOGD("---%s", "我还在");
}
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG, __VA_ARGS__)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/2283.html