Had*_*mir 7 android android-intent android-fragments android-permissions android-settings
试图提出一个我在这里找到的未回答的问题 - 如何突出显示 android 设置应用程序菜单项?
如本视频所示 https://www.youtube.com/watch?v=eHXBc5Mmsqs
一旦您进入屏幕,“Power Shade”菜单项就会突出显示。我正在尝试向我的应用程序添加相同的功能,使用此突出显示功能将用户引导到设置菜单中的项目。我似乎无法找到有关如何实际实现这一点的任何信息,也不知道它是否有我可以搜索的特定名称。
任何帮助,将不胜感激!
反编译应用程序后,这是它的工作原理(简化):
Intent intent = new Intent("com.samsung.accessibility.installed_service");
if (intent.resolveActivity(context.getPackageManager()) == null) {
intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
}
final String EXTRA_FRAGMENT_ARG_KEY = ":settings:fragment_args_key";
final String EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":settings:show_fragment_args";
Bundle bundle = new Bundle();
String showArgs = context.getPackageName() + "/" + MyService.class.getName();
bundle.putString(EXTRA_FRAGMENT_ARG_KEY, showArgs);
intent.putExtra(EXTRA_FRAGMENT_ARG_KEY, showArgs);
intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, bundle);
try {
context.startActivity(intent);
String toastText = "Find PowerShade here";
Toast.makeText(context, toastText, LENGTH_LONG).show();
} catch (Exception e) {
// ask user to grant permission manually
}
Run Code Online (Sandbox Code Playgroud)
基本上它使用的是未公开的 Android 功能(请参阅Android 源代码中的SettingsActivity.java)。
小智 7
适合想要突出显示Settings.ACTION_MANAGE_OVERLAY_PERMISSION或其他权限的人的解决方案。
AppSettings -> Highlight Permission
示例Settings.ACTION_MANAGE_OVERLAY_PERMISSION:
private const val EXTRA_FRAGMENT_ARG_KEY = ":settings:fragment_args_key"
private const val EXTRA_SHOW_FRAGMENT_ARGUMENTS = ":settings:show_fragment_args"
private const val EXTRA_SYSTEM_ALERT_WINDOW = "system_alert_window"
fun askForOverlayPermission(context: Context) {
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.parse("package:${context.packageName}")
).highlightSettingsTo(EXTRA_SYSTEM_ALERT_WINDOW)
context.startActivity(intent)
}
private fun Intent.highlightSettingsTo(string: String): Intent {
putExtra(EXTRA_FRAGMENT_ARG_KEY, string)
val bundle = bundleOf(EXTRA_FRAGMENT_ARG_KEY to string)
putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, bundle)
return this
}
Run Code Online (Sandbox Code Playgroud)
许可密钥。 install_other_apps,alarms_and_reminders,default_browserETC。
| 归档时间: |
|
| 查看次数: |
827 次 |
| 最近记录: |