求助关于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单独写到成一个类就不会报错
为什么
之前我也这么写过但是没有报错为什么这次会报错