Вызов startActivityForResult из класса - наследника AppWidgetProvider

У меня есть простой виджет, который должен вызвать активность и обязательно получать результат. Вызова активности я добился следующим образом (пример сильно сокращён):

public class Widget extends AppWidgetProvider {

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);

        if ("my btn".equals(intent.getAction())) {
            Toast.makeText(context, "Вызов настроек", Toast.LENGTH_SHORT).show();
            Intent intent1 = new Intent();
            intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent1.setAction(android.provider.Settings.ACTION_NETWORK_OPERATOR_SETTINGS);
            context.startActivity(intent1);
        }
    }
}

Однако, я не знаю как получить результат. Как можно добиться этого, если класс не является наследником Activity?


Ответы (1 шт):

Автор решения: Style-7

Обычно виджет, если он работает с активностями, является частью приложения и вызывает его активности. Вызов осуществляется через "отложенную активность" PendingIntent вот так:

RemoteViews remote_views = new RemoteViews( BuildConfig.APPLICATION_ID, R.layout.widget);
remote_views.setOnClickPendingIntent ...
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance( context );
appWidgetManager.updateAppWidget( id, remote_views );

В вашем случае как вариант можно вызвать активность которая уже вызовет startActivityForResult

→ Ссылка