Android – Uygulamayı Cihaz Admini Yapma

Android – Uygulamayı Cihaz Admini Yapma

Uygulamanızı cihazın admini neden yapmak isteyelim? Bir çok sebebi olabilir bunun. Bir kaç tanesini aşağıda sıralarım.

Uygulamanız ile,
-Ekranı kilitleyip, karartabilirsiniz
-Cihazınızdaki dosyaları şifreleyebilirsiniz
-Yeni bir telefon şifresi tanımlayabilir ya da kaldırabilirsiniz
-Bütün verileri temizleyebilirsiniz vb..

Kodu şu şekildedir.

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/myStyle" >
...

   <receiver android:name="com.uygulama.paketi.MyAdmin"
         android:permission="android.permission.BIND_DEVICE_ADMIN">
       <meta-data android:name="android.app.device_admin"
                android:resource="@xml/policies" />
       <intent-filter>
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
                <action android:name="android.app.extra.DEVICE_ADMIN" />
       </intent-filter>
   </receiver>

...
</application>

AndroidManifest.xml de adı geçen policies.xml
Bunlardan işinize yaramayanları çıkartmanızda fayda var. Çünkü izinlerde ihtiyacınız olmayan birşey de isteniyorsa, kullanıcıyı korkutmuş oluruz.

<!--?xml version="1.0" encoding="utf-8"?-->
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-policies>
       <limit-password />
       <watch-login />
       <reset-password />
       <force-lock />
       <wipe-data />
       <expire-password />
       <encrypted-storage />
       <disable-camera />
       </uses-policies>
</device-admin>  

Admin Java Sınıfı MyAdmin.java

package com.covayurt.screenoff.receivers;

import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyAdmin extends DeviceAdminReceiver{


    void showToast(Context context, CharSequence msg)
    {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }

    public CharSequence onDisableRequested(Context paramContext, Intent paramIntent)
    {
        return "This is an optional message to warn the user about disabling.";
    }

    public void onDisabled(Context paramContext, Intent paramIntent)
    {
        showToast(paramContext, "Sample Device Admin: disabled");
    }

    public void onEnabled(Context paramContext, Intent paramIntent)
    {
        showToast(paramContext, "Sample Device Admin: enabled");
    }

    public void onPasswordChanged(Context paramContext, Intent paramIntent)
    {
        showToast(paramContext, "Sample Device Admin: pw changed");
    }

}

MainActivity.java


    static public final int ADMIN_REQUEST = 1;
    private DevicePolicyManager deviceManger;
    private ComponentName compName;
    private boolean active;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ...
        
        deviceManger = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        compName = new ComponentName(this, MyAdmin.class);
        active = deviceManger.isAdminActive(compName);
        if(!active)
        {
           Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
           intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, compName);
           startActivityForResult(intent, ADMIN_REQUEST);
        }
        ...
    }

    ... 

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(requestCode == ADMIN_REQUEST)
        {
             //Burada admin isteğini kabul edip etmediğine göre işlem yapabilirsiniz.
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

Leave a Reply

Your email address will not be published. Required fields are marked *