Cannot open application activity/screen via ADB or own app - Permission Denial

1

I'm trying to open some app activity with adb:

adb shell am start -n com.package.name/com.package.settings.LanguageSettingsScreen

and I still getting error:

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)

So I though that if I build own app with this permission - it will help, so I created new app, added button for injecting this activity and I have added following permission in manifest:

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

but of course it's not working. Without that modification my app is crashing (same error with permissions in logs) And WITH this permissions I cant install this app:

INSTALL_FAILED_DUPLICATE_PERMISSION

because this permission is owned by another app.

Activity information from AndroidManifest of this application (which I want to open):

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

So is there any workaround to open that screen/activity?

I'm starting learning android apps development, so maybe I don't know what I can, and what I can't do.

java
android
android-studio
asked on Stack Overflow Mar 13, 2018 by lgtkbz

1 Answer

0

The INSTALL_FAILED_DUPLICATE_PERMISSION is probably because you are redefining the permission in your manifest. Remove the:

<permission
    android:name="com.application.settings.permission.ACCESS_SETTING"
    android:description="@string/permission_description"
    android:label="ExampleLabel"
    android:protectionLevel="dangerous" />
answered on Stack Overflow Feb 2, 2019 by Raslanove

User contributions licensed under CC BY-SA 3.0