نمایش نتایج 1 تا 6 از 6

نام تاپیک: بدست آوردن شماره سریال دستگاه اندرویدی

  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    بدست آوردن شماره سریال دستگاه اندرویدی

    سلام وقت بخیر

    میخواستم یک شماره یکتا از دستگاه اندرویدی رو داشته باشم که خب طبیعتا شماره سریال دستگاه گزینه مناسبی هست.

    برای بدست اوردن شماره سریال دستگاه اندرویدی حتما از دستورات زیر استفاده کردید :
    String serial = Build.SERIAL

    یا
    String deviceID__ = Settings.Secure.getString(getApplicationContext().  getContentResolver(), Settings.Secure.ANDROID_ID);

    مساله ای که وجود داره اینه هنگامی که این دستور رو شما مینویسید بهتون پیغامی میده با این عنوان :
    using getstring to get device identifiers is not recommended

    که استفاده از این دستور رو گوگل توصیه نمیکنه.
    بخاطرهمین در این صفحه انگار توصیه کرده بیاییم بجای اون از دستور زیر استفاده کنیم :


    var uniqueID = UUID.randomUUID().toString()
    اما اشاره کرده در اندروید 9 ما بایستی مجوز READ_PRIVILEGED_PHONE_STATE هم داشته باشیم.

    مشکلی که داشتم این هست که من این permission رو نتونستم در manifist تعریف کنم چون اصلا چنین مجوزی وجود نداره.

    نظر شما دراین باره چیست؟
    آیا من از Build.SERIAL استفاده کنم در اندروید های بالاتر به مشکل میخورم؟
    آخرین ویرایش به وسیله samiasoft : پنج شنبه 04 مهر 1398 در 02:31 صبح

  2. #2
    مدیر بخش آواتار rubiks.kde
    تاریخ عضویت
    آبان 1390
    محل زندگی
    مشهد
    پست
    1,537

    نقل قول: بدست آوردن شماره سریال دستگاه اندرویدی

    سلام

    در مورد استفاده از دسترسی READ_PRIVILEGED_PHONE_STATE : این دسترسی تنها برای برنامه های سیستمی قابل استفاده است منظور برنامه هایی که در مسیر /system/priv-app قرار دارند. به صورت معمول برای برنامه های عادی قابل استفاده نیست.

    استفاده از ANDROID_ID هم به عنوان شناسه یکتا چندان جالب نیست چرا چون یکتا نیست. توی آندروید های کمتر از 8 این مقدار به صورت تصادفی و در اولین بالا اومدن گوشی تولید میشه و در نتیجه با هر بار فکتوری ریست گوشی این مقدار تغییر میکنه از طرفی توی آندرویدهای جدیدتر از 8 هم این مقدار ترکیب سه مقدار کلید sign برنامه ، کاربر و دستگاه است. به همین خاطر این مقدار با ایجاد یه user توی همون دستگاه کلید جدید میده ، تغییر sign کلید برنامه باعث تغییر اون میشه و فکتوری ریست هم باعث تغییر اون میشه.

    Build.SERIAL هم از api 26 منقضی شده و شما باید از تابع getSerial استفاده کنید که از آندروید 10 به بعد دچار مشکل خواهید شد چون دسترسی به مقدارهای ثابت مثل IMEI و سریال نامبر تنها به برنامه هایی داده میشه که READ_PRIVILEGED_PHONE_STATE داشته باشن و برنامه های عادی هم توانایی تعریف این دسترسی ها رو ندارن.

    برنامه هایی هم که استفاده کرده باشن اگه targets برنامه بیشتر از آندروید 10 باشه با خطای امنینی روبرو میشن و کرش میشه و اگه targets برنامه آندروید 9 به پایین باشه و دسترسی READ_PHONE_STATE رو داشته باشن null برمیگرده و در غیر این صورت دوباره کرش و خطای امنیتی میده.
    YES I AM Qt


    Code Less
    Create More
    Deploy Everywhere

  3. #3
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: بدست آوردن شماره سریال دستگاه اندرویدی

    نقل قول نوشته شده توسط rubiks.kde مشاهده تاپیک
    سلام

    در مورد استفاده از دسترسی READ_PRIVILEGED_PHONE_STATE : این دسترسی تنها برای برنامه های سیستمی قابل استفاده است منظور برنامه هایی که در مسیر /system/priv-app قرار دارند. به صورت معمول برای برنامه های عادی قابل استفاده نیست.

    استفاده از ANDROID_ID هم به عنوان شناسه یکتا چندان جالب نیست چرا چون یکتا نیست. توی آندروید های کمتر از 8 این مقدار به صورت تصادفی و در اولین بالا اومدن گوشی تولید میشه و در نتیجه با هر بار فکتوری ریست گوشی این مقدار تغییر میکنه از طرفی توی آندرویدهای جدیدتر از 8 هم این مقدار ترکیب سه مقدار کلید sign برنامه ، کاربر و دستگاه است. به همین خاطر این مقدار با ایجاد یه user توی همون دستگاه کلید جدید میده ، تغییر sign کلید برنامه باعث تغییر اون میشه و فکتوری ریست هم باعث تغییر اون میشه.

    Build.SERIAL هم از api 26 منقضی شده و شما باید از تابع getSerial استفاده کنید که از آندروید 10 به بعد دچار مشکل خواهید شد چون دسترسی به مقدارهای ثابت مثل IMEI و سریال نامبر تنها به برنامه هایی داده میشه که READ_PRIVILEGED_PHONE_STATE داشته باشن و برنامه های عادی هم توانایی تعریف این دسترسی ها رو ندارن.

    برنامه هایی هم که استفاده کرده باشن اگه targets برنامه بیشتر از آندروید 10 باشه با خطای امنینی روبرو میشن و کرش میشه و اگه targets برنامه آندروید 9 به پایین باشه و دسترسی READ_PHONE_STATE رو داشته باشن null برمیگرده و در غیر این صورت دوباره کرش و خطای امنیتی میده.
    تشکر از شما
    آنطور که متوجه شدم کلا معایب این دستورات رو گفتید...پس به نظرتون راه حل دیگری وجود نداره؟!

  4. #4
    مدیر بخش آواتار rubiks.kde
    تاریخ عضویت
    آبان 1390
    محل زندگی
    مشهد
    پست
    1,537

    نقل قول: بدست آوردن شماره سریال دستگاه اندرویدی

    یه مقدار با اومدن آندروید 10 و مسایل امنیتی کار مشکل میشه چون دسترسی به مقدارهای ثابت و غیرقابل تغییر ، قابل دسترس توسط برنامه های عادی نیست.

    هدفتون برای استفاده از این شناسه یکتا چی هست؟
    YES I AM Qt


    Code Less
    Create More
    Deploy Everywhere

  5. #5
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: بدست آوردن شماره سریال دستگاه اندرویدی

    نقل قول نوشته شده توسط rubiks.kde مشاهده تاپیک
    یه مقدار با اومدن آندروید 10 و مسایل امنیتی کار مشکل میشه چون دسترسی به مقدارهای ثابت و غیرقابل تغییر ، قابل دسترس توسط برنامه های عادی نیست.

    هدفتون برای استفاده از این شناسه یکتا چی هست؟
    یک اپلیکشن برای یک وبسایتی نوشته بودم که میخواستم تعداد بازدید رو برایش ثبت کنم.

    بخاطرهمین میخواستم از شماره سریال دستگاه استفاده کنم و هربار چک کنم که ایا قبلا مطلب مربوطه را بازدید کرده یا خیر.

    البته اپ مربوطه دارای قسمت login هم هست..من میتونستم براساس نام کاربری این کار رو انجام بدم...اما خب ممکنه کاربر مربوطه login نکرده باشه و بصورت میهمان اپ رو استفاده کنه بخاطرهمین دیگر نام کاربری اینجا معنی پیدانمیکرد برای همین خواستم از شماره سریال دستگاه استفاده کنم.

  6. #6
    مدیر بخش آواتار rubiks.kde
    تاریخ عضویت
    آبان 1390
    محل زندگی
    مشهد
    پست
    1,537

    نقل قول: بدست آوردن شماره سریال دستگاه اندرویدی

    نقل قول نوشته شده توسط samiasoft مشاهده تاپیک
    یک اپلیکشن برای یک وبسایتی نوشته بودم که میخواستم تعداد بازدید رو برایش ثبت کنم.

    بخاطرهمین میخواستم از شماره سریال دستگاه استفاده کنم و هربار چک کنم که ایا قبلا مطلب مربوطه را بازدید کرده یا خیر.

    البته اپ مربوطه دارای قسمت login هم هست..من میتونستم براساس نام کاربری این کار رو انجام بدم...اما خب ممکنه کاربر مربوطه login نکرده باشه و بصورت میهمان اپ رو استفاده کنه بخاطرهمین دیگر نام کاربری اینجا معنی پیدانمیکرد برای همین خواستم از شماره سریال دستگاه استفاده کنم.
    اگه در این حد است که حساسیت بالایی نداره میتونید از همون ANDROID_ID استفاده کنید
    YES I AM Qt


    Code Less
    Create More
    Deploy Everywhere

تاپیک های مشابه

  1. استفاده از Socket در اندروید (ارسال همزمان درخواست ها)
    نوشته شده توسط slr560 در بخش Android Studio
    پاسخ: 2
    آخرین پست: دوشنبه 01 بهمن 1397, 14:39 عصر
  2. آیا استفاده از php و MySql در اندروید منطقی است ؟
    نوشته شده توسط ashkan 261 در بخش Android Studio
    پاسخ: 5
    آخرین پست: سه شنبه 28 شهریور 1396, 15:45 عصر
  3. پاسخ: 2
    آخرین پست: دوشنبه 10 آبان 1395, 17:27 عصر
  4. سوال: آیا کسی برای خودش رویداد درست کرده که استفاده کنه؟
    نوشته شده توسط forodo در بخش C#‎‎
    پاسخ: 5
    آخرین پست: پنج شنبه 22 خرداد 1393, 18:27 عصر
  5. سوال: مشکل در استفاده از رویداد هاید تکست باکس ؟
    نوشته شده توسط mohammad_2039 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: پنج شنبه 19 فروردین 1389, 11:13 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •