java安卓应用包名称,如何使用JNI Android获取应用程序包名称或applicationId

For the protection issue of the shared library I will try to get package name using JNI but it will give errors. So, is it possible to get package name or applicationId using JNI? If anyone have example or references for this problem then suggests. Because not any good tutorial or solution available. Else any other way suggest of the protection of the shared library.

解决方案

Yes, it's possible. Android is based on Linux, we can obtain a lot of information in user space provided by kernel.

In your example, the information stored here /proc/${process_id}/cmdline

We can read this file, and get the application id.

See a simple example

#include

#include

#include

#include

#define TAG "YOURAPPTAG"

extern "C"

JNIEXPORT void JNICALL

Java_com_x_y_MyNative_showApplicationId(JNIEnv *env, jclass type) {

pid_t pid = getpid();

__android_log_print(ANDROID_LOG_DEBUG, TAG, "process id %d\n", pid);

char path[64] = { 0 };

sprintf(path, "/proc/%d/cmdline", pid);

FILE *cmdline = fopen(path, "r");

if (cmdline) {

char application_id[64] = { 0 };

fread(application_id, sizeof(application_id), 1, cmdline);

__android_log_print(ANDROID_LOG_DEBUG, TAG, "application id %s\n", application_id);

fclose(cmdline);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值