این پرمیشن های ران تایم دهن منو سرویس کرد :|
بعد از حدود یک سال تازه فهمیدم متد requestPermissions کل پرمیشن ها رو به صورت آرایه میگیره و پشت سر هم باکس های پرمیشن رو نشون میده. بعد از تموم شدن باکس ها، کال بک onRequestPermissionsResult فراخونی میشه و نتایج اکسپت شدن یا نشدن پرمیشن ها توی آرایه grantResult میاد.
با تلاش و کوشش فراوان :)) هلپر پرمیشن ها رو نوشتم. کد در gist
چرا سینگل تون ننوشتم؟ چون نمیشد! چرا؟ چون پرمیشن ها توی هر اکتیویتی اجرا میشن، یعنی لازمه هر جا لازم شد همون اکتیویتی (و نه کانتکس) رو بهش پاس بدم. بنابراین سینگل تون بودن بی معنیه.
کلاس سینگل تون ارسال SMS
اینم زیاد پیچیده نیست. فقط لازمه متد init توی کلاس اپلیکیشن فراخونی بشه.
کلاس سینگل تون SharedPreferences
قبلا در مورد آموزشش نوشتم. این API خیلی پر کاربرده و لازمه بهش مسلط باشم.
این API رو به صورت سینگل تون نوشتم: کد در gist
تنها نکتش اینه که باید متد init توی کلاس کاستوم اپلیکیشن فراخونی بشه. یعنی کانتکس اپلیکیشن بهش میدیم.
کد جاوای قسمت آزمون سخت نبود. فقط روش حل تصحیح آزمون تستی رو توضیح میدم.
برای هر تکست ویوی که یک گزینه رو نشون میده یک لیسنر مینویسیم و بهش تگ متناظر با شماره گزینه رو اختصاص میدیم.
یک آرایه به اسم answerSheet ساخته و گزینه های درست رو به ترتیب توش میریزیم.
هر گزینه ای که کلیک شد تگش رو میگیریم و با عضو متناظر توی آرایه چک میکنیم، اگر درست بود یعنی پاسخ صحیح بوده و در غیر این صورت پاسخ اشتباه بوده.
حقیقتا سر طراحی لی لوت این صفحه برای ریسپانسیو بودنش دهنم سرویس شد :| مخصوصا سر چهار تا گزینش :|
1. 4 ضلع صفحه رو با گاید لاین به اندازه 1 درصد حاشیه گذاری کردم.
2. با اندازه های 10، 30، 86 درصد به چهار قسمت تبدیلش کردم.