頭條巨量引擎上報(bào)踩坑

頭條API上報(bào)痊夭,上報(bào)接口執(zhí)行一遍,聯(lián)調(diào)那會(huì)有兩遍數(shù)據(jù)塞颁,頭條的問題过咬,暫無法解決大渤;
上報(bào)的時(shí)候遇到的坑:
1.上報(bào)需要imei android,oaid
a. imei :android10以上獲取不到:
b, androidID 和頭條的比對(duì)不上,(下面是我使用的方法援奢,有知道原因的請(qǐng)告訴我)
c.oaid需要使用msa_mdid_1.0.13這版本的aar(有需要這版本的可以聯(lián)系我)
(移動(dòng)開發(fā)聯(lián)盟)
使用oaid + imei +androidID
以下是獲取的方法:

//獲取imei
public static String getDeviceId() {
        String deviceId = "";
        try {
            if (ContextCompat.checkSelfPermission(MyApplication.getContext(), Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
                TelephonyManager tm = (TelephonyManager) MyApplication.getContext().getSystemService(TELEPHONY_SERVICE);
                deviceId = tm.getDeviceId();
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    deviceId =  tm.getImei();
                    Log.e("aaaa", "獲取返回設(shè)備id 成功:"+ tm.getDeviceId());
                }
            }
        } catch (Exception e) {
        }
        return deviceId;
    }

public class SystemUtil {

    public static String getPacakcageModel() {
        return "ocrtwo";
    }

    /**
     * 獲取版本號(hào)
     *
     * @param
     * @return
     */
    public static String getVersion() {
        try {
            PackageManager manager = MyApplication.getContext().getPackageManager();
            PackageInfo info = manager.getPackageInfo(MyApplication.getContext().getPackageName(), 0);
            return info.versionCode + "";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "0";
    }

    /**
     * 獲取版本號(hào)
     *
     * @param
     * @return
     */
    public static String getVersionName() {
        try {
            PackageManager manager = MyApplication.getContext().getPackageManager();
            PackageInfo info = manager.getPackageInfo(MyApplication.getContext().getPackageName(), 0);
            return info.versionName + "";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "1.0.0";
    }

    /**
     * 獲取包名
     *
     * @param
     * @return
     */
    public static String getPckName() {
        return MyApplication.getContext().getPackageName();
    }

    /**
     * 獲取渠道
     *
     * @param
     * @return
     */
    public static String getChannel() {
        try {
            ApplicationInfo appInfo = MyApplication.getContext().getPackageManager()
                      .getApplicationInfo(MyApplication.getContext().getPackageName(),
                                PackageManager.GET_META_DATA);
            if (null != appInfo.metaData) {
                return appInfo.metaData.getString("UMENG_CHANNEL");
            } else {
                return null;
            }

        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 獲取手機(jī)廠商
     *
     * @return 手機(jī)廠商
     */
    public static String getDeviceBrand() {
        return Build.BRAND;
    }

    /**
     * 獲取手機(jī)型號(hào)
     *
     * @return 手機(jī)型號(hào)
     */
    public static String getSystemModel() {
        return Build.MODEL;
    }

    /**
     * 系統(tǒng)版本
     * @return
     */
    public static String getSystemRelease() {
        return Build.VERSION.RELEASE;
    }

    public static String getDeviceId() {
        String deviceId = "";
        try {
            if (ContextCompat.checkSelfPermission(MyApplication.getContext(), Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
                TelephonyManager tm = (TelephonyManager) MyApplication.getContext().getSystemService(TELEPHONY_SERVICE);
                deviceId = tm.getDeviceId();
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                    deviceId =  tm.getImei();
                    Log.e("aaaa", "獲取返回設(shè)備id 成功:"+ tm.getDeviceId());
                }
            }
        } catch (Exception e) {
        }
        return deviceId;
    }

    public static String getMD5Imei(){
        String deviceId = "";

        if (!TextUtils.isEmpty(getDeviceId())) {
            deviceId = MD5Utils.MD5_32bit(getDeviceId());
        }

        return deviceId;
    }
    public static String getMD5Android(Context context){
        String deviceId = "";

        if (!TextUtils.isEmpty(getAndroidId(context))) {
            deviceId = MD5Utils.MD5_32bit(getAndroidId(context));
        }

        return deviceId;
    }

    public static String getUniquePsuedoID() {
        String serial = null;

        String m_szDevIDShort = "35" +
                  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 位
        try {
            serial = Build.class.getField("SERIAL").get(null).toString();
            //API>=9 使用serial號(hào)
            return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
        } catch (Exception exception) {
            //serial需要一個(gè)初始化
            serial = "serial"; // 隨便一個(gè)初始化
        }
        //使用硬件信息拼湊出來的15位號(hào)碼
        return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
    }

    public static String getAndroidId (Context context) {
        String ANDROID_ID = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
        return ANDROID_ID;
    }

    /**
     * 獲取wifi的mac地址兼犯,適配到android Q
     * @param paramContext
     * @return
     */
    public static String getMac(Context paramContext) {
        try {
            if (Build.VERSION.SDK_INT >= 23) {
                String str = getMacMoreThanM(paramContext);
                if (!TextUtils.isEmpty(str))
                    return str;
            }
            // 6.0以下手機(jī)直接獲取wifi的mac地址即可
            WifiManager wifiManager = (WifiManager)paramContext.getSystemService("WIFI");
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            if (wifiInfo != null)
                return wifiInfo.getMacAddress();
        } catch (Throwable throwable) {}
        return null;
    }

    public static String getMacMd5(Context context){
        String mac = getMac(context);
        mac =  mac.replaceAll(":","");
        mac = mac.toUpperCase();
        mac = MD5Utils.MD5_32bit(mac);
        return mac;
    }

    /**
     * android 6.0+獲取wifi的mac地址
     * @param paramContext
     * @return
     */
    private static String getMacMoreThanM(Context paramContext) {
        try {
            //獲取本機(jī)器所有的網(wǎng)絡(luò)接口
            Enumeration enumeration = NetworkInterface.getNetworkInterfaces();
            while (enumeration.hasMoreElements()) {
                NetworkInterface networkInterface = (NetworkInterface)enumeration.nextElement();
                //獲取硬件地址忍捡,一般是MAC
                byte[] arrayOfByte = networkInterface.getHardwareAddress();
                if (arrayOfByte == null || arrayOfByte.length == 0) {
                    continue;
                }

                StringBuilder stringBuilder = new StringBuilder();
                for (byte b : arrayOfByte) {
                    //格式化為:兩位十六進(jìn)制加冒號(hào)的格式集漾,若是不足兩位,補(bǔ)0
                    stringBuilder.append(String.format("%02X:", new Object[] { Byte.valueOf(b) }));
                }
                if (stringBuilder.length() > 0) {
                    //刪除后面多余的冒號(hào)
                    stringBuilder.deleteCharAt(stringBuilder.length() - 1);
                }
                String str = stringBuilder.toString();
                // wlan0:無線網(wǎng)卡 eth0:以太網(wǎng)卡
                if (networkInterface.getName().equals("wlan0")) {
                    return str;
                }
            }
        } catch (SocketException socketException) {
            return null;
        }
        return null;
    }


}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砸脊,一起剝皮案震驚了整個(gè)濱河市具篇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凌埂,老刑警劉巖驱显,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瞳抓,居然都是意外死亡埃疫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門孩哑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栓霜,“玉大人,你說我怎么就攤上這事横蜒「炻” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵丛晌,是天一觀的道長(zhǎng)仅炊。 經(jīng)常有香客問我,道長(zhǎng)澎蛛,這世上最難降的妖魔是什么抚垄? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上督勺,老公的妹妹穿的比我還像新娘渠羞。我一直安慰自己,他們只是感情好智哀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布次询。 她就那樣靜靜地躺著,像睡著了一般瓷叫。 火紅的嫁衣襯著肌膚如雪屯吊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天摹菠,我揣著相機(jī)與錄音盒卸,去河邊找鬼。 笑死次氨,一個(gè)胖子當(dāng)著我的面吹牛蔽介,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播煮寡,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼虹蓄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了幸撕?” 一聲冷哼從身側(cè)響起薇组,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坐儿,沒想到半個(gè)月后律胀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡貌矿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年炭菌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逛漫。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡黑低,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尽楔,到底是詐尸還是另有隱情投储,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布阔馋,位于F島的核電站玛荞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏呕寝。R本人自食惡果不足惜勋眯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧客蹋,春花似錦塞蹭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至辆琅,卻和暖如春漱办,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背婉烟。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工娩井, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人似袁。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓洞辣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親昙衅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扬霜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 隨著Google對(duì)隱私的重視以及Android10的逐漸普及,獲取設(shè)備的唯一標(biāo)識(shí)越來越來難绒尊,在Android10以...
    百事可樂99閱讀 2,509評(píng)論 0 1
  • ?androidQ(api29)出來后畜挥,IMEI等等這些個(gè)設(shè)備唯一號(hào)都沒法獲取了仔粥,雖然androidID還能用但是...
    隱藏的用戶閱讀 11,097評(píng)論 0 2
  • 原文鏈接鏈接:http://www.reibang.com/p/6be91ee932a7[https://www...
    Small_Cake閱讀 17,634評(píng)論 18 207
  • 用兩張圖告訴你婴谱,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,699評(píng)論 2 59
  • 問題:頭條的點(diǎn)擊量中的設(shè)備id與我方獲取的設(shè)備id差異大躯泰,即是自然量多 分析:在android10以前是用imei...
    wsspace閱讀 2,350評(píng)論 0 2