بدست اوردن mac address گوشی و استفاده از ان برای رمز ورود
سلام دوستان
من میخوام یه برنامه طراحی کنم که از mac address به عنوان رمز عبور استفاده کنه،تا یه جاهایی پیش رفتم اما نمیدونم چرا کار نمیکنه
حتی با Toast هم نمایش داده نمیشه
از mac id هم استفاده کردم نمایش داده میشه ولی توی شرط if کار نمیکنه
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnid = (Button) findViewById(R.id.btnid);
Button btnmac = (Button) findViewById(R.id.btnmac);
final TextView txtid = (TextView) findViewById(R.id.txtid);
final TextView txtmac = (TextView) findViewById(R.id.txtmac);
final TextView id = (TextView) findViewById(R.id.id);
final TextView mac = (TextView) findViewById(R.id.mac);
btnid.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String a = getMacId();
String i = "bc:e8:09:fd:uy:45";
txtid.setText(a);
if (a == i) {
id.setText("ok");
}
else {
id.setText("no");
}
Log.i("LOG", "Id: " + a);
Toast.makeText(getApplicationContext(), a, Toast.LENGTH_LONG).show();
}
});
btnmac.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = manager.getConnectionInfo();
String b = info.getMacAddress();
String m = "gf:cc:05:hh:88:io";
txtmac.setText(b);
if (b == m) {
mac.setText("ok");
}
else {
mac.setText("no");
}
Log.i("LOG", "Mac: " + b);
Toast.makeText(getApplicationContext(), b, Toast.LENGTH_LONG).show();
}
});
}
public String getMacId() {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
return wifiInfo.getBSSID();
}
ممنون میشم راهنماییم کنید
این متود که خروجیش یک String هست رو میتونی در اولین اجرای برنامت استفاده کنی.
طریقه ی کارش این طور هست که بعد از چک کردن androidId , deviceId برای بدست آوردن یک device_id انحصاری برای گوشی کاربر و در نظر گرفتن باگهای موجود در این رابطه در نهایت به صورت تصادفی خودش یک آیدی میسازه و اون رو در یک device_id.xml ذخیره میکنه. این رو هم در نظر داشته باشید که درصد خیلی کمی از کاربران کارشون به device_id تصادفی میرسه (احتمالا امولیتور یا تب لیت)
برای دفعات بعدی ورود به برنامه فقط کافیه که device_id ساخته شده در فایل device_id.xml رو فراخوانی کنی :)
میتونی با تغییرات اندکی device_id رو به عنوان Prefs هم ذخیره کنی.
public static String uuid() {
final String PREFS_FILE = "device_id.xml";
final String PREFS_DEVICE_ID = "device_id";
UUID uuid = null;
final SharedPreferences prefs = context.getSharedPreferences(PREFS_FILE, 0);
final String id = prefs.getString(PREFS_DEVICE_ID, null);
if (id != null) {
uuid = UUID.fromString(id);
return uuid.toString();
} else {
final String androidId = Secure.getString(context.getContentResolver(), Secure.ANDROID_ID);
try {
if ((androidId != null) && androidId != "9774d56d682e549c") {
uuid = UUID.nameUUIDFromBytes(androidId.getBytes("utf8"));
prefs.edit().putString(PREFS_DEVICE_ID, uuid.toString()).commit();
return uuid.toString();
} else {
final String deviceId = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
if (deviceId != null && deviceId != "0000000000000000") {
uuid = UUID.nameUUIDFromBytes(deviceId.getBytes("utf8"));
prefs.edit().putString(PREFS_DEVICE_ID, uuid.toString()).commit();
return uuid.toString();
} else {
uuid = UUID.randomUUID();
prefs.edit().putString(PREFS_DEVICE_ID, uuid.toString()).commit();
return uuid.toString();
}
}
}
catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}
Permission:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .