我正在使用一个用于通过密码保护Android设备的android项目。为此,我必须以编程方式设置密码。使用了引用user device administration api和example但是它会抛出错误(下面):
08-18 02:12:26.888: W/dalvikvm(2600): threadid=1: thread exiting with uncaught exception (group=0x40a401f8)
08-18 02:12:26.888: E/AndroidRuntime(2600): FATAL EXCEPTION: main
08-18 02:12:26.888: E/AndroidRuntime(2600): java.lang.RuntimeException: Unable to start activity ComponentInfo{dilli.passwordtest/dilli.passwordtest.MainActivity}: java.lang.SecurityException: No active admin ComponentInfo{dilli.passwordtest/dilli.passwordtest.MainActivity}
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.ActivityThread.access$600(ActivityThread.java:123)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.os.Handler.dispatchMessage(Handler.java:99)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.os.Looper.loop(Looper.java:137)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.ActivityThread.main(ActivityThread.java:4429)
08-18 02:12:26.888: E/AndroidRuntime(2600): at java.lang.reflect.Method.invokeNative(Native Method)
08-18 02:12:26.888: E/AndroidRuntime(2600): at java.lang.reflect.Method.invoke(Method.java:511)
08-18 02:12:26.888: E/AndroidRuntime(2600): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
08-18 02:12:26.888: E/AndroidRuntime(2600): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
08-18 02:12:26.888: E/AndroidRuntime(2600): at dalvik.system.NativeStart.main(Native Method)
08-18 02:12:26.888: E/AndroidRuntime(2600): Caused by: java.lang.SecurityException: No active admin ComponentInfo{dilli.passwordtest/dilli.passwordtest.MainActivity}
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.os.Parcel.readException(Parcel.java:1327)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.os.Parcel.readException(Parcel.java:1281)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.admin.IDevicePolicyManager$Stub$Proxy.setPasswordQuality(IDevicePolicyManager.java:761)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.admin.DevicePolicyManager.setPasswordQuality(DevicePolicyManager.java:292)
08-18 02:12:26.888: E/AndroidRuntime(2600): at dilli.passwordtest.MainActivity.onCreate(MainActivity.java:24)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.Activity.performCreate(Activity.java:4465)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
08-18 02:12:26.888: E/AndroidRuntime(2600): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
08-18 02:12:26.888: E/AndroidRuntime(2600): ... 11 more
我没有明确澄清。那么,有些伙伴可以帮助我。提前谢谢。
答案 0 :(得分:1)
Caused by: java.lang.SecurityException: No active admin ComponentInfo{dilli.passwordtest/dilli.passwordtest.MainActivity}
要修改设备管理员设置,您的应用必须由用户作为设备管理员批准。您需要使用适当的策略实施DeviceAdminReceiver
,并且用户必须进入设置中的安全屏幕并将您的应用程序激活为设备管理应用程序。
答案 1 :(得分:0)
SDK提供了有关如何在android上使用Device Administrator的完整示例:
<SDK_PATH>/samples/android-21/legacy/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java
该示例也可在其他API中使用。
PS:别忘了查看清单:)