Как подключить виджет Android к моему приложению для Android? оба мои приложения для Android

Я хочу объединить свой виджет и одно из моих приложений для Android.

Возможно ли это сделать?

Мой план таков: как только пользователь откроет мой виджет для Android, виджет напрямую откроет мое приложение для Android?

Есть ли способ как?

Я сделал здесь некоторый метод из своего класса виджетов:

public class ExampleAppWidgetProvider extends AppWidgetProvider {

public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; i++) {
int appWidgetId = appWidgetIds[i];

Intent intent = startActivity(new Intent("com.xxx.yyy.widget.FlamingoActivity"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
intent, 0);

RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.widget1);

views.setOnClickPendingIntent(R.id.Image, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}

Я попытался вызвать второе приложение, FlamingoActivity, но оно не работает.. :(

НЕ ПОЛНОЕ РЕШЕНИЕ:

Я должен изменить эту строку

Intent intent = startActivity(new Intent("com.xxx.yyy.widget.FlamingoActivity"));

к этому:

Intent intent = new Intent(context, FlamingoActivity.class);

person Nadirah Ibtisam    schedule 18.12.2012    source источник


Ответы (2)


Вам нужно установить onClickpendingIntent для вашего виджета

   Intent intent = new Intent(context, ExampleActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    // Get the layout for the App Widget and attach an on-click listener to the button
     RemoteViews views = new 
                 RemoteViews(context.getPackageName(),R.layout.appwidget_provider_layout);
      views.setOnClickPendingIntent(R.id.button, pendingIntent);

А также см. этот вопрос Запуск активности из виджета

person Rahul    schedule 18.12.2012
comment
tq @rahul за ответ! действительно ценю это, моя ошибка заключалась в этой строке Intentintent = startActivity(new Intent(com.xxx.yyy.widget.FlamingoActivity)); я должен изменить это: намерение намерения = новое намерение (контекст, FlamingoActivity.class); Да, основная концепция, я пропустил это .. :) спасибо, Рахул, я нашел этот ответ по ссылке, которую ты мне дал! :D привет, добавь меня на фейсбук..сейчас я ищу члена Android.. :) Ибтисам Захра (фото кота) - person Nadirah Ibtisam; 18.12.2012

Активность, которую вы пытаетесь вызвать, должна быть общедоступной (экспортированной) в манифесте своего приложения. Нет ничего особенного в запуске действий из виджета, кроме того факта, что вы используете PendingIntent, чтобы виджет работал как часть вашего приложения (он запускается внутри приложения запуска).

person Nikolay Elenkov    schedule 18.12.2012
comment
да. И, видимо, вы пропустили вызов setOnClickPendingIntent(), который фактически запускает его. - person Nikolay Elenkov; 18.12.2012
comment
Да, я думаю, из-за этого я попытался изменить строку Intent, когда редактировал решение, это стало ошибкой. Сначала приложение работает хорошо, я могу щелкнуть виджет, и оно откроет второе приложение, содержащее заставку ... и приложение внезапно остановится :( - person Nadirah Ibtisam; 18.12.2012