Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85d4b5f7 authored by Adam Cohen's avatar Adam Cohen
Browse files

Ensuring that keyguard widgets are bound with correct options

-> We need to bind the widget and indicate that it is a keyguard widget

Change-Id: I8e76b45b86aecc671669022c6f5fad071b62837d
parent ff571fee
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -145,13 +145,20 @@ public class AppWidgetPickActivity extends ActivityPicker {
        Intent intent = getIntentForPosition(which);

        int result;
        if (intent.getExtras() != null) {
            // If there are any extras, it's because this entry is custom.
        if (intent.getExtras() != null && 
                (intent.getExtras().containsKey(AppWidgetManager.EXTRA_CUSTOM_INFO) ||
                 intent.getExtras().containsKey(AppWidgetManager.EXTRA_CUSTOM_EXTRAS))) {
            // If these extras are present it's because this entry is custom.
            // Don't try to bind it, just pass it back to the app.
            setResultData(RESULT_OK, intent);
        } else {
            try {
                mAppWidgetManager.bindAppWidgetId(mAppWidgetId, intent.getComponent());
                Bundle options = null;
                if (intent.getExtras() != null) {
                    options = intent.getExtras().getBundle(
                            AppWidgetManager.EXTRA_APPWIDGET_OPTIONS);
                }
                mAppWidgetManager.bindAppWidgetId(mAppWidgetId, intent.getComponent(), options);
                result = RESULT_OK;
            } catch (IllegalArgumentException e) {
                // This is thrown if they're already bound, or otherwise somehow
+13 −0
Original line number Diff line number Diff line
@@ -475,6 +475,17 @@ public class SecuritySettings extends SettingsPreferenceFragment
        }
    }

    private Intent getBaseIntent() {
        Intent baseIntent = new Intent(Intent.ACTION_MAIN, null);
        baseIntent.addCategory(Intent.CATEGORY_DEFAULT);

        Bundle options = new Bundle();
        options.putInt(AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY,
                AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD);
        baseIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options);
        return baseIntent;
    }

    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
        final String key = preference.getKey();
@@ -511,6 +522,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
                // Launch the widget picker
                pickIntent.putExtra(AppWidgetManager.EXTRA_CUSTOM_INFO, extraInfos);
                pickIntent.putExtra(AppWidgetManager.EXTRA_CUSTOM_EXTRAS, extraExtras);
                pickIntent.putExtra(Intent.EXTRA_INTENT, getBaseIntent());
                startActivityForResult(pickIntent, REQUEST_PICK_USER_SELECTED_APPWIDGET);
            } else {
                Log.e(TAG, "Unable to allocate an AppWidget id in lock screen");
@@ -545,6 +557,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
                // Launch the widget picker
                pickIntent.putExtra(AppWidgetManager.EXTRA_CUSTOM_INFO, extraInfos);
                pickIntent.putExtra(AppWidgetManager.EXTRA_CUSTOM_EXTRAS, extraExtras);
                pickIntent.putExtra(Intent.EXTRA_INTENT, getBaseIntent());
                startActivityForResult(pickIntent, REQUEST_PICK_STATUS_APPWIDGET);
            } else {
                Log.e(TAG, "Unable to allocate an AppWidget id in lock screen");