2016-10-19 35 views
1

Я бы попытался получить imei устройства в C/C++ (используя ndk) и получить результат с помощью JNI.android get imei в cc/C++ для ndk/JNI

const char *res = exec_get_out("service call iphonesubinfo 3"); 

Работает в оболочке, но не в моем приложении

У меня есть READ_PHONE_STATE набор разрешений в манифесте. Это предназначено для Marshmallow Android (и я принял разрешение в настройках)

Есть ли какое-либо другое решение, которое могло бы работать, или это невозможно без среды JNI?

ответ

0

проверка this и this

#include <sys/system_properties.h> 

    //returns the string length of the value. 
    int ir = __system_property_get("ro.gsm.imei", imei_start);   

     if(ir > 0) 
    { 
     imei_start[15]=0;//strz end  
     printf("method1 got imei %s len %d\r\n",imei_start,strlen(imei_start)); 
     strcpy(g_imei,imei_start); 
    } 
     else 
    { 
     printf("method1 imei failed - trying method2\r\n"); 
     //old dumpsys imei getter 
     char* res = exec_get_out("dumpsys iphonesubinfo"); 
     const char* imei_start_match = "ID = "; 
     int imei_start_match_len = strlen(imei_start_match); 
     char* imei_start = strstr(res,imei_start_match); 
     if(imei_start && strlen(imei_start)>=15+imei_start_match_len) 
     { 
      imei_start += imei_start_match_len; 
      imei_start[15] = 0; 
      printf("method2 IMEI [%s] len %d\r\n",imei_start,strlen(imei_start)); 
      strcpy(g_imei,imei_start); 
     } 
    }