رفتن به مطلب

افزودن برنامه به Device Administrator


Gray Mind

ارسال‌های توصیه شده

خوب دوستان امروز میخوام آموزش اضافه کردن برنامه ای که داریم مینویسیم رو به مدیر دستگاه رو آموزش بدم 

این آموزش طبق کدی که توی گیتهاب بود هستش که آدرسشو هم اگه پیدا کردم میذارم

 

اولین کاری که باید بکنید اینه که این رسیور رو  به منیفست برنامه اضافه کنید

 

<receiver
          android:name=".DemoDeviceAdminReceiver"
          android:permission="android.permission.BIND_DEVICE_ADMIN">
  <intent-filter>
    <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
  </intent-filter>

  <meta-data
             android:name="android.app.device_admin"
             android:resource="@xml/device_admin_sample" />
</receiver>
       

خوب حالا کلاس و کد xml زیر رو دانلود کنید و به پروژه تون اضافه کنید

DemoDeviceAdminReceiver.java رو به شاخه برنامه کنار MainActivity بذارید یا هرجا مهم نیست

device_admin_sample.xml رو هم به مسیر main/res/xml اضافه کنید(اگه پوشه ای با این اسم نبود میتونید پوشه جدید درست کنید و داخلش قرار بدید)

DemoDeviceAdmin.zip

 

خوب حالا میری سراغ کد : 

در اکتیویتی که میخواین فعالسازی انجام بشه این متغیر هارو تعریف کنید :

ComponentName demoDeviceAdmin;
static final int ACTIVATION_REQUEST = 47;
DevicePolicyManager devicePolicyManager;

و این رو توی onCreate() قرار بدید:

devicePolicyManager = (DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);
demoDeviceAdmin = new ComponentName(context, DemoDeviceAdminReceiver.class);

 

خوب حالا توی چک باکس یا توی سوییچ کامپات میتونید توی رویدادهاش تعریف کنید که مثلا اگه تیک دار شد درخواست ادمین ارسال بشه وگرنه حذف بشه دسترسی

خوب برای سوییچ کامپات اینجوریه کدش: 

DeviceAdminRQ.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked){
                    Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, demoDeviceAdmin);
                    intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "برنامه به دسترسی های زیر نیاز دارد !");
                    startActivityForResult(intent, ACTIVATION_REQUEST);
                }else {
                    devicePolicyManager.removeActiveAdmin(demoDeviceAdmin);
                    Toast.makeText(context,"مدیر دستگاه غیر فعال شد!",Toast.LENGTH_SHORT).show();
                }
            }
});

 

خوب حالا که درخواست ارسال شد دو مسئله هست ادمین شد ؟ یا نشد؟ برای فهمیدن این ما یه متد داریم به اسم onActivityResult که میتونیم هر درخواستی دادیم بتونیم یا به مقدار اون دسترسی داشته باشیم .

خوب این متد رو هم به اکتیویتی تون اضافه کنید :

 

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        final TextView soundon = (TextView)layout.findViewById(R.id.generalon);
        final TextView location = (TextView)layout.findViewById(R.id.location);
        final TextView wipe = (TextView)layout.findViewById(R.id.wipe);
        switch (requestCode) {
            case ACTIVATION_REQUEST:
                if (resultCode == Activity.RESULT_OK) {
                  	// هرکاری میخواین بکنید مثلا مقداری رو ذخیره کنید تا بعدا چک کنید ادمین شده یا نه و...
                    Toast.makeText(context,"مدیر دستگاه فعال شد !",Toast.LENGTH_SHORT).show();
                } else {
					// اینجا هم که معلومه ادمین کردن برنامه ناموفق بوده
                    Toast.makeText(context,"مدیر دستگاه فعال نشد !",Toast.LENGTH_SHORT).show();
                }
                return;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

 

و این هم صفحه گیت هاب کدها : لینک

ببخشید اگه کم و کسری بود :scratch_one-s_head::give_rose:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...