与 Android 应用程序快捷方式关联的权限
Permissions associated with Android Application Shortcuts
我正在尝试解决我正在开发的 Android 应用程序的一些安全审查项目,我正在查看一些与快捷方式相关的 "high severity" 项目。
安全审查纯粹是静态代码分析工作,报告中突出显示的许多项目都是转移注意力的问题。我怀疑这些也是,但我正在寻找第二个意见。
已标记的代码/配置区域与设置快捷方式相关:
Intent shortcutIntent = new Intent(context, MyShortcutActivity.class);
shortcutIntent.setAction(Intent.ACTION_DEFAULT);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "My shortcut");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, getShortCutIconResource()));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate", false);
this.context.sendBroadcast(addIntent);
安全报告抱怨我在没有权限的情况下创建这些意图。但它们是预期由 Android OS 调用的意图——OS 创建快捷方式,如果单击快捷方式,OS 将启动 MyShortcutActivity .所以我觉得没有任何适用的特殊许可。
该报告还标记了 MyShortcutActivity 的定义:
<activity
android:name=".MyShortcutActivity"
...
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
再次抱怨它缺少权限。但是因为它可以通过快捷方式启动,所以我真的看不出什么权限适用。
有什么建议吗?
更新:所以我已经在我的清单中获得了 INSTALL_SHORTCUT 许可。根据答案,在这里,我更改了上面的代码,如下所示:
this.context.sendBroadcast(addIntent, Manifest.permission.INSTALL_SHORTCUT);
但这似乎不起作用。
您需要添加此权限才能在启动器菜单上创建快捷方式:
谷歌搜索几秒钟后,您会找到 Android 具有大量权限的开发者网站。
INSTALL_SHORTCUT
Added in API level 19
String INSTALL_SHORTCUT
Allows an application to install a shortcut in Launcher.
Protection level: normal
Constant Value: "com.android.launcher.permission.INSTALL_SHORTCUT"
https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT
我正在尝试解决我正在开发的 Android 应用程序的一些安全审查项目,我正在查看一些与快捷方式相关的 "high severity" 项目。
安全审查纯粹是静态代码分析工作,报告中突出显示的许多项目都是转移注意力的问题。我怀疑这些也是,但我正在寻找第二个意见。
已标记的代码/配置区域与设置快捷方式相关:
Intent shortcutIntent = new Intent(context, MyShortcutActivity.class);
shortcutIntent.setAction(Intent.ACTION_DEFAULT);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "My shortcut");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, getShortCutIconResource()));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate", false);
this.context.sendBroadcast(addIntent);
安全报告抱怨我在没有权限的情况下创建这些意图。但它们是预期由 Android OS 调用的意图——OS 创建快捷方式,如果单击快捷方式,OS 将启动 MyShortcutActivity .所以我觉得没有任何适用的特殊许可。
该报告还标记了 MyShortcutActivity 的定义:
<activity
android:name=".MyShortcutActivity"
...
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
再次抱怨它缺少权限。但是因为它可以通过快捷方式启动,所以我真的看不出什么权限适用。
有什么建议吗?
更新:所以我已经在我的清单中获得了 INSTALL_SHORTCUT 许可。根据答案,在这里,我更改了上面的代码,如下所示:
this.context.sendBroadcast(addIntent, Manifest.permission.INSTALL_SHORTCUT);
但这似乎不起作用。
您需要添加此权限才能在启动器菜单上创建快捷方式:
谷歌搜索几秒钟后,您会找到 Android 具有大量权限的开发者网站。
INSTALL_SHORTCUT
Added in API level 19
String INSTALL_SHORTCUT
Allows an application to install a shortcut in Launcher.
Protection level: normal
Constant Value: "com.android.launcher.permission.INSTALL_SHORTCUT"
https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT