我试图用adb打开一些应用活动:
adb shell am start -n com.package.name/com.package.settings.LanguageSettingsScreen
我仍然收到错误:
Security exception: Permission Denial: starting Intent { flg=0x10000000 cmp=com.package.name/com.package.settings.LanguageSettingsScreen } from null (pid=2524, uid=2000) requires com.application.settings.permission.ACCESS_SETTING
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.package.name/com.package.settings.LanguageSettingsScreen } from null (pid=2524, uid=2000) requires com.application.settings.permission.ACCESS_SETTING
at com.android.server.am.ActivityStackSupervisor.checkStartAnyActivityPermission(ActivityStackSupervisor.java:1918)
at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:629)
at com.android.server.am.ActivityStarter.startActivityLocked(ActivityStarter.java:409)
at com.android.server.am.ActivityStarter.startActivityMayWait(ActivityStarter.java:1268)
at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:5960)
at com.android.server.am.ActivityManagerShellCommand.runStartActivity(ActivityManagerShellCommand.java:424)
at com.android.server.am.ActivityManagerShellCommand.onCommand(ActivityManagerShellCommand.java:142)
at android.os.ShellCommand.exec(ShellCommand.java:96)
at com.android.server.am.ActivityManagerService.onShellCommand(ActivityManagerService.java:18707)
at android.os.Binder.shellCommand(Binder.java:581)
at android.os.Binder.onTransact(Binder.java:481)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:4767)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3797)
at android.os.Binder.execTransact(Binder.java:682)
所以我虽然如果我使用此权限构建自己的应用程序 - 它会有所帮助,所以我创建了新的应用程序,添加了用于注入此活动的按钮,并且我在清单中添加了以下权限:
<uses-permission android:name="com.package.settings.permission.ACCESS_SETTING" />
<permission
android:name="com.application.settings.permission.ACCESS_SETTING"
android:description="@string/permission_description"
android:label="ExampleLabel"
android:protectionLevel="dangerous" />
但当然它不起作用。 没有这个修改我的应用程序崩溃(与日志中的权限相同的错误) 有了这个权限,我无法安装这个应用程序:
INSTALL_FAILED_DUPLICATE_PERMISSION
因为此权限归其他应用所有。
此应用程序的AndroidManifest的活动信息(我想打开):
<activity android:name="com.package.settings.LanguageSettingsScreen" android:label="@string/settings_language_title" android:theme="@style/SettingsTheme" android:exported="true" android:permission="com.application.settings.permission.ACCESS_SETTING">
-<intent-filter>
<action android:name="com.package.settings.SETTINGS_LANGUAGE_SCREEN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
那么打开该屏幕/活动有什么解决方法吗?
我开始学习Android应用程序开发,所以也许我不知道我能做什么,以及我无法做什么。
答案 0 :(得分:0)
INSTALL_FAILED_DUPLICATE_PERMISSION
可能是因为您正在清单中重新定义权限。删除:
<permission
android:name="com.application.settings.permission.ACCESS_SETTING"
android:description="@string/permission_description"
android:label="ExampleLabel"
android:protectionLevel="dangerous" />