我正在尝试在android上使用片段注入来调用我的应用程序的辅助功能服务的 com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment 。
以下是代码:
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
i.setClassName("com.android.settings", "com.android.settings.Settings");
ComponentName name = new ComponentName(getApplicationContext().getPackageName(), "MyAccessibilityService");
i.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, "com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment");
i.putExtra("mComponentName", name);
startActivity(intentTT);
但在执行这些代码后,LogCat显示了这一点:
E/Settings:###(9542): onApplyThemeResource...
E/HtcPreferenceActivity(9542): context.getClassLoader(): dalvik.system.PathClassLoader[/system/app/Settings.apk]
E/HtcPreferenceActivity(9542): context.getPackageName(): com.android.settings
E/HtcPreferenceActivity(9542): context.getPackageCodePath(): /system/app/Settings.apk
E/HtcPreferenceActivity(9542): context.getPackageResourcePath(): /system/app/Settings.apk
E/HtcPreferenceActivity(9542): fragmentName: com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment
E/AndroidRuntime(9542): FATAL EXCEPTION: main
E/AndroidRuntime(9542): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.Settings}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment: make sure class name exists, is public, and has an empty constructor that is public
我尝试使用“nComponentName”额外设置到我的应用程序来调用此片段,然后转到我的应用程序的辅助功能服务页面。
以下是android源代码的一部分:
public class ToggleAccessibilityServicePreferenceFragment
extends ToggleFeaturePreferenceFragment implements DialogInterface.OnClickListener {
private static final int DIALOG_ID_ENABLE_WARNING = 1;
private static final int DIALOG_ID_DISABLE_WARNING = 2;
private final SettingsContentObserver mSettingsContentObserver =
new SettingsContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange, Uri uri) {
String settingValue = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
final boolean enabled = settingValue.contains(mComponentName.flattenToString());
mToggleSwitch.setCheckedInternal(enabled);
}
};
private ComponentName mComponentName;
private int mShownDialogId;
或者您可以转到此页面的源代码,以查看:https://goo.gl/c4UGw9
我需要设置/放置other extras
吗?我试图解决这个问题超过一个月。但仍然无法解决它。我错过了什么吗?