extern “C”
JNIEXPORT jint JNICALL
Java_ycfinance_ucsmy_com_processapplication_MainActivity_reguninstall(JNIEnv *env, jclass type,
jstring path_, jstring
url_,jint sdkVerson) {
const char *path = env->GetStringUTFChars(path_, 0);
const char *url = env->GetStringUTFChars(url_, 0);
pid_t fpid; //fpid表示fork函数返回的值
int count = 0;
fpid = fork();
if(fpid<0){
LOGD("克隆失败");
}else if(fpid == 0){
LOGD("子进程!");
int fuileDescript = inotify_init();
int watch = inotify_add_watch(fuileDescript,path,IN_DELETE_SELF);
void * p = malloc(sizeof(struct inotify_event));
//(int __fd, void* __buf, size_t __count)
read(fuileDescript,p, sizeof(struct inotify_event));
inotify_rm_watch(fuileDescript,watch);
if(sdkVerson < 17){
execlp("am","am","start","-a","android.intent.action.VIEW","-d",url,NULL);
} else{
//4.2以上的系统由于用户权限管理更严格,需要加上 --user 0
execlp("am","am","start","--user","0","-a","android.intent.action.VIEW","-d",url,NULL);
}
}else{
LOGD("父进程");
}
env->ReleaseStringUTFChars(path_,path);
env->ReleaseStringUTFChars(url_,url);
return 1;
}