Java Can';t调用com.android.settings.ChooseLockPassword活动

Java Can';t调用com.android.settings.ChooseLockPassword活动,java,android,Java,Android,我试图从自己的应用程序调用ChooseLockPassword活动,但出现异常 Java代码: Android清单 <!-- Lock Screen. --> <activity android:name="ChooseLockPassword" android:exported="true"> <action android:name="android.intent.action.RUN" /> </activity>

我试图从自己的应用程序调用
ChooseLockPassword
活动,但出现异常

Java代码:

Android清单

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

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

</activity>  

例外情况

04-2517:54:48.599:E/AndroidRuntime(6739):致命异常:main
04-25 17:54:48.599:E/AndroidRuntime(6739):java.lang.RuntimeException:无法启动活动组件信息{com.test.SystemPIN/com.test.SystemPIN.SystemPINTestActivity}:java.lang.SecurityException:权限拒绝:启动意图{act=android.Intent.action.RUN cmp=com.android.settings/.ChooseLockPassword}{40652e98 6739:com.test.SystemPIN/10033}(pid=6739,uid=10033)需要null
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.os.Handler.dispatchMessage(Handler.java:99)上
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.os.Looper.loop(Looper.java:123)上
04-25 17:54:48.599:E/AndroidRuntime(6739):位于android.app.ActivityThread.main(ActivityThread.java:3683)
04-25 17:54:48.599:E/AndroidRuntime(6739):由以下原因引起:java.lang.SecurityException:权限拒绝:启动意图{act=android.Intent.action.RUN cmp=com.android.settings/.ChooseLockPassword}来自ProcessRecord的{40652e98 6739:com.test.SystemPIN/10033}(pid=6739,uid=10033)要求为空
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.os.Parcel.readException(Parcel.java:1322)上
04-25 17:54:48.599:E/AndroidRuntime(6739):位于android.os.Parcel.readException(Parcel.java:1276)
04-25 17:54:48.599:E/AndroidRuntime(6739):在android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1351)

您收到一个权限被拒绝的异常,这意味着您需要更多权限。所需的权限为
null
,这表明您可能根本不允许调用该活动。

我找到了解决方案,希望与您共享

如果您有像我一样的android源代码,您可以在设置清单文件中进行一些修改,该文件位于packages\apps\Settings\scr\com\android\Settings\AndroidManifest.xml只需修改即可

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

你的日志格式真的不正确。我已经重新格式化了一些…@ViToBrothersApoyan:这种特殊的安全错误意味着该活动没有导出,因此只能由自己的应用程序使用。@Commonware以及如何导出该活动?@Commonware我只想调用屏幕锁定对话框,你知道我该怎么做吗那?谢谢!@ViToBrothersApoyan:你召集一个帮派,给他们装备高性能武器,入侵谷歌,劫持人质,并强迫核心安卓团队输出该活动(注:这在美国是非法的)。然后,等待约2年,直到市场上所有较旧的设备都被包含修改过的固件的设备替换。换句话说,您无法导出该活动——该应用程序的作者可以。如果他们希望第三方使用该活动,不仅会导出该活动,而且会有关于如何使用该活动的文档,可能是SDK的一部分。
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>
<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);