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

مارس 7, 2019| سنا عبادی
آموزش استفاده از 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

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

همچنین بخوانید :  سورس اندروید چیست ؟

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

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

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

همچنین بخوانید :  معرفی پلاگین ADB WiFi Connect

یعنی ما باید با استفاده از 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 زدید برای کاربر باز میشود به این صورت هست :

 

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

  خرید سورس های حرفه ای بازی و اپلیکیشن اندروید

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

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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Rating*