2012-04-25 129 views
0

我想打电话给我自己的应用程序ChooseLockPassword活动,但发生异常。无法调用com.android.settings.ChooseLockPassword活动

Java代码:

Intent intent = new Intent(Intent.ACTION_RUN); 
intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.ChooseLockPassword")); 
startActivity(intent); 

Android清单

<!-- Lock Screen. --> 
<activity android:name="ChooseLockPassword" 
      android:exported="true"> 

<action android:name="android.intent.action.RUN" /> 

</activity> 

异常

04-25 17:54:48.599: E/AndroidRuntime(6739): FATAL EXCEPTION: main 
04-25 17:54:48.599: E/AndroidRuntime(6739): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.SystemPIN/com.test.SystemPIN.SystemPINTestActivity}: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.RUN cmp=com.android.settings/.ChooseLockPassword } from ProcessRecord{40652e98 6739:com.test.SystemPIN/10033} (pid=6739, uid=10033) requires null 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.os.Looper.loop(Looper.java:123) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.app.ActivityThread.main(ActivityThread.java:3683) 

<snip> 

04-25 17:54:48.599: E/AndroidRuntime(6739): Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.RUN cmp=com.android.settings/.ChooseLockPassword } from ProcessRecord{40652e98 6739:com.test.SystemPIN/10033} (pid=6739, uid=10033) requires null 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.os.Parcel.readException(Parcel.java:1322) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.os.Parcel.readException(Parcel.java:1276) 
04-25 17:54:48.599: E/AndroidRuntime(6739):  at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1351) 

<snip> 
+0

你的日志格式是真正Ø FF。我已经重新格式化了一些... – 2012-04-25 13:19:25

回答

0

我找到了解决方案,并希望与大家分享。

,假如你有我,你可以只是做在设置一些修改其位于包清单文件\ APPS \设置的Android源\ SCR \ COM \机器人\设置\ AndroidManifest.xml中只需修改

<activity android:name="ChooseLockPassword" android:exported="false" 
      android:windowSoftInputMode="stateVisible|adjustResize"/> 

线,并设置机器人:出口=“真”,而不是“假”之后,你可以重新编译源和调用对话与以下行

Intent intent = new Intent(Intent.ACTION_RUN); 
intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.ChooseLockPassword")); 
startActivity(intent); 
0

你得到拒绝异常的权限,这意味着你需要更多的权限。根据需要列出的许可是null,表明您可能根本不被允许调用该活动。

+0

没办法做到这一点? :( – 2012-04-25 13:19:07

+0

@ViToBrothersApoyan:安全错误的具体味道意味着活动不会被导出,所以它不能被使用,除非被它自己的应用程序使用。 – CommonsWare 2012-04-25 13:29:04

+0

@CommonsWare我怎样才能导出这个活动? – 2012-04-25 13:30:38