java - 无法通过 ADB 或自己的应用程序打开应用程序 Activity/屏幕 - 权限拒绝

标签 java android android-studio

我正在尝试使用 adb 打开一些应用程序 Activity :

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)

所以我认为,如果我使用此权限构建自己的应用程序 - 它将有所帮助,因此我创建了新应用程序,添加了用于注入(inject)此 Activity 的按钮,并且我在 list 中添加了以下权限:

<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 信息(我想打开):

<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>

那么有什么解决方法可以打开该屏幕/Activity 吗?

我正在开始学习 Android 应用程序开发,所以也许我不知道我能做什么,不能做什么。

最佳答案

INSTALL_FAILED_DUPLICATE_PERMISSION 可能是因为您正在 list 中重新定义权限。删除:

<permission
    android:name="com.application.settings.permission.ACCESS_SETTING"
    android:description="@string/permission_description"
    android:label="ExampleLabel"
    android:protectionLevel="dangerous" />

关于java - 无法通过 ADB 或自己的应用程序打开应用程序 Activity/屏幕 - 权限拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49263355/

相关文章:

java - 使用 xmlstream 读取器时出错

android - React Native 版本卡在应用程序 :mergeReleaseResources

Android Studio "Project Structure"无法正常运行

java - 从 MultiValueMap 获取具有相同键的所有对象

java - 为什么我会收到不可转换的类型错误?

java - 没有找到 ImageView?

android - 使用 Robolectric 测试 HostApduService

android - 来自 Uri 的图像路径返回 null

android - 继续收到 SDK 错误信息

java - 向 eclipse 项目添加 SWT 性质