Gray Mind 913 ارسال شده در 10 بهمن، ۱۳۹۵ اشتراک گذاری ارسال شده در 10 بهمن، ۱۳۹۵ خوب دوستان امروز میخوام آموزش اضافه کردن برنامه ای که داریم مینویسیم رو به مدیر دستگاه رو آموزش بدم این آموزش طبق کدی که توی گیتهاب بود هستش که آدرسشو هم اگه پیدا کردم میذارم اولین کاری که باید بکنید اینه که این رسیور رو به منیفست برنامه اضافه کنید <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); } و این هم صفحه گیت هاب کدها : لینک ببخشید اگه کم و کسری بود لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.