استفاده از Signature Permission سورس اندروید

اسفند 16, 1397| سنا عبادی
آموزش استفاده از Signature Permission در برنامه نویسی اندروید | مارکت سورس اندروید ریور

در این مقاله درباره مجوز های امضا یا Signature Permission می نویسیم و درباره آموزش استفاده از این پرمیشن ها توضیح میدهیم. داستان از اینجایی شروع شد که خیلی اتفاقی طبق سناریوی پروژه ایی که در دست داشتیم لازم داشتیم که از پرمیشنی خاص استفاده کنیم .

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

مجوزی که من از آن استفاده کردم را در زیر نوشتم ( ناگفته نماند این مقاله را مدیون این مجوز هستم ) :

 <uses-permission android:name="android.permission.WRITE_SETTINGS"/>

و من طبق روالی که دنبال کردم این پرمیشن را در منیفست پروژه وارد کردم ولی با یک ارور رو به ور شدم که میگفت باید :

  tools:ignore="ProtectedPermissions"

را اضافه میکردیم یعنی در اخر در منیفست باید پرمیشن ها را به صورت زیر داشته باشید (دو نمونه مثال زدم)

<uses-permission android:name="android.permission.WRITE_SETTINGS"
                     tools:ignore="ProtectedPermissions"/>

    <uses-permission android:name="android.permission.CLEAR_APP_CACHE"
                     tools:ignore="ProtectedPermissions"/>

خب مثل همیشه ادامه ی کد رو تمام کردم و موقع اجرای کد شد که با کرش مواجه شدم ، با این خطا :

ava.lang.SecurityException: com.dev2qa.example was not granted this permission: android.permission.WRITE_SETTING

به این معنا که : شما این چنین پرمیشنی ندارید . عجب !!

همچنین بخوانید :  آموزش کاتلین : Extension Functions

خب بعد از واررسی کدها متوجه شدم این جور پرمیشن ها تحت عنوان SIGNATURE PERMISSION وجود دارند که نه DANGEROUS PERMISSION و نه NORMAL PERMISSION هستند، پس این هارا با هم قاطی نکنیم . برای حل چنین مواردی چه کنیم ؟

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

ولی طبق گفته ی گوگل این مجوز ها برای اپ های third party که اپ هایی هستن که ما توسعه میدهیم نیستند.درکل با گرفتن این مجوز ها میشه کاری کرد که با نفوذ به تنظیمان گوشی کاربر بدون اطلاع به آن کار هایی را کرد ولی ولی گوگل محدودیت های privacy ‌را که اعمال کرده ، ‌اون بی اطلاع بودن کاربر دیگر معنا ندارد . زیرا گوگل در تغییراتی که اخیرا روی SDK ها اعمال کرده تاکیدات بیشتری روی حریم خصوصی و اللخصوص امنیت اپلیکیشن ها کرده است.

همچنین بخوانید :  آموزش ساخت صفحه اسپلش در اندروید استدیو

یعنی ما باید با استفاده از intent ها کاربر را به صفحه ایی هدایت کنیم ک شخصا مجوز را صادر کند . یعنی باید در کل کدی که میزنید در بلاک if/else ایی به این صورت باشید .

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
          if (Settings.System.canWrite(BatteryActivity.this)) {
            // Do stuff here
            StartPowerSavingMode();

          } else {
            Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS);
            intent.setData(Uri.parse("package:" + getPackageName()));
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
          }
        }

که طبق سناریوی من که باید به sound/light/wifi/…‌کاربر دسترسی مستقیم داشته باشم نمیشد به راحتی استفاده کنم پس باید اینکارو میکردم . یعنی راه حل خوبی را پیدا کردم.

اون صفحه ایی که با کدی که با intent زدید برای کاربر باز میشود به این صورت هست :

 

0/5 (0 Reviews)
سنا عبادی CO-Founder نویسنده مقاله

توسعه دهنده موبایل به ویژه سیستم عامل اندروید ، هم بنیانگذار اندروید ریور و در تلاش برای تحقق یک رویا..



می تونی سنا عبادی رو توی شبکه های اجتماعی هم دنبال کنی ...

مقالات مرتبط را بخوانید :


سورس های اندروید شامل تخفیف رو ببین !


  تخفیف ها و اخبار ویژه رو در تلگراممون دنبال کن :)
به این مقاله امتیاز دهید :
0/5 (0 Reviews)
  خرید سورس های حرفه ای بازی و اپلیکیشن اندروید

دسته‌ها: آموزش برنامه نویسی اندروید

دیدگاهتان را بنویسید

راهنما : برای نوشتن موارد مختلف در دیدگاه می توانید از راهنمای نگارش اندروید ریور استفاده کنید : نگارش کد کوتاه `your code`
نگارش کد بلند یا نگارش بخش عمده یک سورس کد :
[sourcecode lang="your code language"] your code here [/sourcecode]