Android设备管理器 DevicePolicyManager
設(shè)備管理器有個(gè)特點(diǎn),你注冊了之后如果不解除注冊就會(huì)難以卸載帶有設(shè)備管理器的應(yīng)用,目前4.3版本仍未提示用戶如何卸載,maybe later.
在「設(shè)定-安全」你可以看見「設(shè)備管理器」,它提供一些高級功能,如下:
<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>
這個(gè)XML文件由你自己定義,這些權(quán)限寫在這個(gè)文件里。你可以選擇其中的權(quán)限。
下面這個(gè)例子是,在打開的時(shí)候判斷有沒有注冊設(shè)備管理器,沒有注冊則提示注冊,否則Toast「已經(jīng)注冊」。
1.MainActivity.java
1 package com.example.wannauninstall;
2
3 import android.app.Activity;
4 import android.app.admin.DevicePolicyManager;
5 import android.content.ComponentName;
6 import android.content.Context;
7 import android.content.Intent;
8 import android.os.Bundle;
9 import android.view.Menu;
10 import android.widget.Toast;
11
12 public class MainActivity extends Activity {
13
14 DevicePolicyManager devicePolicyMNG ;
15 ComponentName componentName ;
16 @Override
17 protected void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19 setContentView(R.layout.activity_main);
20 devicePolicyMNG = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
21 componentName = new ComponentName(this,DeAdReceiver.class);
22
23 if(devicePolicyMNG.isAdminActive(componentName))
24 {
25 Toast.makeText(MainActivity.this, "已經(jīng)注冊", Toast.LENGTH_LONG).show();
26 }
27 else ActiveMNG();
28
29 }
30 private void ActiveMNG()
31 {
32 Intent intent = new Intent (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
33 intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
34 intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"--其他描述--");
35 startActivityForResult(intent , 0 );
36
37 }
46 }
and you gonna need this:
2.DeAdReceiver.java
package com.example.wannauninstall;
import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class DeAdReceiver extends DeviceAdminReceiver{
@Override
public void onEnabled(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e("TAG000","------onEnabled-------");
super.onEnabled(context, intent);
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e("TAG000","--------onReceive-----");
super.onReceive(context, intent);
}
}
每次打開應(yīng)用,你都會(huì)在LOGCAT里發(fā)現(xiàn)TAG000的onReceive的LOG,而如果注冊了還可以看到onEnabled的LOG。
3.DeviceAdminReceiver是繼承BroadcastReceiver的,所以也需要在Manifest中注冊。類似這樣:
<receiver
android:name="com.example.wannauninstall.DeAdReceiver"
android:label="System 設(shè)備管理器"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@layout/lock_screen" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
注意上面的intent-filter里面的過濾條件,和前面第32行的implicit intent對應(yīng)。
and you gonna see this:
It's a wit from:http://blog.csdn.net/feng88724/article/details/6323544,check it for more.
mar.20 Larry
總結(jié)
以上是生活随笔為你收集整理的Android设备管理器 DevicePolicyManager的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 临时手机验证码_实用网站(一)短信验证码
- 下一篇: 花式“薅羊毛”,马斯克将 Twitter