123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package com.yyrh.imei;
- import android.Manifest;
- import android.app.Activity;
- import android.content.Context;
- import android.content.SharedPreferences;
- import android.content.pm.PackageManager;
- import android.os.Build;
- import android.provider.Settings;
- import android.support.v4.app.ActivityCompat;
- import android.telephony.TelephonyManager;
- import com.yyrh.constant.Constants;
- import com.yyrh.constant.SDKSettings;
- import com.yyrh.utils.Utils;
- import com.yythird.sdk.ChannelSDK;
- public class ImeiUtil {
- public static String getImei(Context context) {
- TelephonyManager telephonyManager = null;
- String imei = "";
- try {
- telephonyManager = (TelephonyManager) context
- .getSystemService(Context.TELEPHONY_SERVICE);
- if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- // ActivityCompat#requestPermissions
- // here to request the missing permissions, and then overriding
- // public void onRequestPermissionsResult(int requestCode, String[] permissions,
- // int[] grantResults)
- // to handle the case where the user grants the permission. See the documentation
- // for ActivityCompat#requestPermissions for more details.
- imei = Settings.Secure.getString(context.getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
- if (judgeStrNull(imei)){
- return userSimulateImei(context);
- }else{
- SDKSettings.ifa_type = "3";
- return imei;
- }
- }
- if (telephonyManager.getDeviceId() != null) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- imei = telephonyManager.getImei();
- }else{
- imei = telephonyManager.getDeviceId();
- }
- SDKSettings.ifa_type = "1";
- } else {
- imei = Settings.Secure.getString(context.getApplicationContext().getContentResolver(), Settings.Secure.ANDROID_ID);
- SDKSettings.ifa_type = "3";
- }
- } catch (Exception e) {
- System.out.println(e.toString());
- }
- if (judgeStrNull(imei)){
- return userSimulateImei(context);
- }else{
- Utils.setSharedPreferences("yyrh","simulateImei",imei,context);
- }
- return imei;
- }
- static String userSimulateImei(Context context){
- SharedPreferences sp = context.getSharedPreferences("yyrh", Activity.MODE_PRIVATE);
- String simulateImei = sp.getString("simulateImei", "");
- if (!judgeStrNull(simulateImei)){
- return simulateImei;
- }else {
- // 用putString的方法保存数据
- String encryptMD5to16 ="YYR" + encryptMD5to16();
- SDKSettings.ifa_type = "0";
- Utils.setSharedPreferences("yyrh","simulateImei",encryptMD5to16,context);
- return encryptMD5to16;
- }
- }
- public static boolean judgeStrNull(String str) {
- return (str == null || str.equals(""));
- }
- public static String encryptMD5to16() {
- return simulateUniqueId().substring(8, 24);
- }
- //获得独一无二的Psuedo ID
- public static String simulateUniqueId() {
- String serial = null;
- String m_szDevIDShort = "" +
- Build.BOARD.length() % 10 + Build.BRAND.length() % 10 +
- Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 +
- Build.DISPLAY.length() % 10 + Build.HOST.length() % 10 +
- Build.ID.length() % 10 + Build.MANUFACTURER.length() % 10 +
- Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 +
- Build.TAGS.length() % 10 + Build.TYPE.length() % 10 +
- Build.USER.length() % 10; //13 位
- String time = m_szDevIDShort + (System.currentTimeMillis());
- return getMD5(time);
- }
- public static String getMD5(String content) {
- String s = null;
- char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
- 'a', 'b', 'c', 'd', 'e', 'f'};
- try {
- java.security.MessageDigest md = java.security.MessageDigest
- .getInstance("MD5");
- md.update(content.getBytes());
- byte tmp[] = md.digest();
- char str[] = new char[16 * 2];
- int k = 0;
- for (int i = 0; i < 16; i++) {
- byte byte0 = tmp[i];
- str[k++] = hexDigits[byte0 >>> 4 & 0xf];
- str[k++] = hexDigits[byte0 & 0xf];
- }
- s = new String(str);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return s;
- }
- public void getOaid(final Context context){
- ChannelSDK.getInstance().SDKGetOaid();
- }
- }
|