如何在ToggleAccessibilityServicePreferenceFragment上进行片段注入?

时间:2015-12-31 09:03:02

标签: android android-fragments fragment settings accessibility

我正在尝试在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吗?我试图解决这个问题超过一个月。但仍然无法解决它。我错过了什么吗?

0 个答案:

没有答案