After decompiling the app, here's how it works (simplified):
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
}
Basically it's using undocumented features of Android (see SettingsActivity.java in Android source).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…