读书人

关于DevicePolicyManager的有关问题

发布时间: 2012-10-19 16:53:36 作者: rapoo

求助关于DevicePolicyManager的问题

Java code
package t1.yb;import android.app.Activity;import android.app.admin.DeviceAdminReceiver;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class mainActivity extends Activity {    Button btn1, btn2, btn3;    DevicePolicyManager devicePolicyManager;    ComponentName componentName;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        btn1 = (Button) findViewById(R.id.btn1);        btn2 = (Button) findViewById(R.id.btn2);        btn3 = (Button) findViewById(R.id.btn3);        devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);        componentName = new ComponentName(mainActivity.this, lockclass.class);        btn1.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                if(!devicePolicyManager.isAdminActive(componentName)) {                    Intent intent = new Intent(                            DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);                    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,                            componentName);                    intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,                            "(可自定义区域2)");                    startActivityForResult(intent, 1);                }            }        });        btn2.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                devicePolicyManager.removeActiveAdmin(componentName);            }        });    }    public class lockclass extends DeviceAdminReceiver {    }}

XML code
<?xml version="1.0" encoding="utf-8"?><manifest    xmlns:android="http://schemas.android.com/apk/res/android"    package="t1.yb"    android:versionCode="1"    android:versionName="1.0">    <application        android:icon="@drawable/icon"        android:label="@string/app_name">        <activity            android:name=".mainActivity"            android:label="@string/app_name">            <intent-filter>                <action                    android:name="android.intent.action.MAIN" />                <category                    android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <receiver            android:name=".mainActivity$lockclass"            android:permission="android.permission.BIND_DEVICE_ADMIN">            <meta-data                android:name="android.app.device_admin"                android:resource="@xml/device_admin" />            <intent-filter>                <action                    android:name="android.app.action.DEVICE_ADMIN_ENABLED" />            </intent-filter>        </receiver>    </application>    <uses-sdk        android:minSdkVersion="8" /></manifest> 

XML code
<?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 />    </uses-policies></device-admin> 


报错 为什么
09-26 10:33:36.079: ERROR/AndroidRuntime(728): FATAL EXCEPTION: main
09-26 10:33:36.079: ERROR/AndroidRuntime(728): java.lang.RuntimeException: Unable to instantiate receiver t1.yb.mainActivity$lockclass: java.lang.InstantiationException: t1.yb.mainActivity$lockclass
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at android.app.ActivityThread.access$3200(ActivityThread.java:125)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at android.os.Looper.loop(Looper.java:123)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at java.lang.reflect.Method.invokeNative(Native Method)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at java.lang.reflect.Method.invoke(Method.java:521)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at dalvik.system.NativeStart.main(Native Method)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): Caused by: java.lang.InstantiationException: t1.yb.mainActivity$lockclass
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at java.lang.Class.newInstanceImpl(Native Method)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at java.lang.Class.newInstance(Class.java:1429)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2780)
09-26 10:33:36.079: ERROR/AndroidRuntime(728): ... 10 more


[解决办法]
我发现吧lockclass单独写到成一个类就不会报错
为什么
之前我也这么写过但是没有报错为什么这次会报错

读书人网 >Android

热点推荐