сделать Android-виджет невидимым при запуске деятельности - PullRequest
0 голосов
/ 29 июня 2011

У меня есть виджет, и когда я щелкаю по нему, я начинаю новое действие с прозрачным фоном и хочу скрыть этот виджет, чтобы на домашнем экране присутствовала только активность, или найти способ поместить окно активности в верхнюю часть окна. виджет, но я не могу использовать метод intent.getSourceBounds, потому что я не использую API уровня 7 или выше

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

Я нашел решение

     public class homeWidget extends AppWidgetProvider {
public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
 @Override
    public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds )
    {
        RemoteViews remoteViews;
        ComponentName watchWidget;

        Intent active = new Intent(context, homeWidget.class);
        active.setAction(ACTION_WIDGET_RECEIVER);
        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);


        remoteViews = new RemoteViews( context.getPackageName(), R.layout.widget );
        watchWidget = new ComponentName( context, homeWidget.class );

        remoteViews.setOnClickPendingIntent(R.id.buttonWidget1, actionPendingIntent);



        appWidgetManager.updateAppWidget( watchWidget, remoteViews );
    }
 @Override
 public void onEnabled(Context context){
     AppWidgetManager mgr = AppWidgetManager.getInstance(context); 
     RemoteViews remoteViews;
        ComponentName watchWidget;

        Intent active = new Intent(context, homeWidget.class);
        active.setAction(ACTION_WIDGET_RECEIVER);
        PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);


        remoteViews = new RemoteViews( context.getPackageName(), R.layout.widget );
        watchWidget = new ComponentName( context, homeWidget.class );

        remoteViews.setOnClickPendingIntent(R.id.buttonWidget1, actionPendingIntent);

        mgr.updateAppWidget(watchWidget,remoteViews);

 }
 @Override
 public void onReceive(Context context, Intent intent) {
     AppWidgetManager mgr = AppWidgetManager.getInstance(context); 
     if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
         Log.i("proverka", "uleva");
         Intent intent1 = new Intent(context,widget_activity.class);
         PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intent1, 0);
         RemoteViews remoteViews;
         remoteViews = new RemoteViews( context.getPackageName(), R.layout.widget );

         ComponentName watchWidget;
         watchWidget = new ComponentName( context, homeWidget.class );

         remoteViews.setViewVisibility(R.id.LinearLayout01, View.GONE);
         try {
            pendingIntent.send();
        } catch (CanceledException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



         mgr.updateAppWidget(watchWidget,remoteViews);
         }
         super.onReceive(context, intent);
 }

 }
0 голосов
/ 29 июня 2011

Попробуйте использовать следующий пример кода

, если вы создали удаленные виды, используя следующий код

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

установить видимость всего виджета, используя следующий код

views.setViewVisibility(R.id.widget_counter, View.INVISIBLE);
...