Saya memiliki beberapa perangkat yang saya uji, dan tidak ingin mendapatkan DeviceID secara manual untuk masing-masing perangkat. Jawaban di sini untuk mendapatkan DeviceID secara terprogram tidak berfungsi untuk saya (Nol hilang) yang menyebabkan iklan sebenarnya ditampilkan, bukan iklan percobaan.
Saya meletakkan ini di kelas Aplikasi saya onCreate, dan kemudian mengekspos deviceId menggunakan metode pengambil sehingga dapat diakses secara keseluruhan.
@Override
public void onCreate() {
super.onCreate();
String androidId = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID);
deviceId = MD5(androidId).toUpperCase();
}
public static String getDeviceId() {
return deviceId;
}
private static String deviceId;
Dan metode MD5;
public String MD5(String md5) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(md5.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException e) {
}
return null;
}
Kemudian gunakan ini setiap kali saya membuat objek AdRequest:
if(BuildConfig.DEBUG) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice(Application.getDeviceId())
.build();
adView.loadAd(adRequest);
} else {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
adView.loadAd(adRequest);
}