Скрытие основной активности при нажатии виджета - PullRequest
1 голос
/ 03 декабря 2011

Я разработал виджет приложения для Android, при нажатии которого появляется действие с темой диалога. Однако если из основного действия нажать кнопку «Домой», а затем попытаться снова нажать на виджет, основное действие появится на заднем плане. Есть ли способ предотвратить это? Т.е. основное действие не появляется при нажатии на виджет anifest

AndroidManifest.xml

<receiver android:name=".myWidget" >
<intent-filter>
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
           android:resource="@xml/res_widget" />
</receiver>

AppWidgetProvider.java

public void onUpdate(Context c, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
    final int N = appWidgetIds.length;
     for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];
    RemoteViews views = new RemoteViews(c.getPackageName(), R.layout.widget_layout);
    Intent fireDialog = new Intent(c,Execute.class);
    fireDialog.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // if i click home when i am in main activity i still get it on background-this doesnt help neither though
    PendingIntent pendingIntent = PendingIntent.getActivity(c, 0, fireDialog, 0);
    views.setOnClickPendingIntent(R.id.myButton, pendingIntent);
    Log.w(LOG_TAG,"Called");
    appWidgetManager.updateAppWidget(appWidgetId, views);
     }
}

public void onReceive(Context c, Intent intent) 
{
 final String action=intent.getAction();
 if(AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)){
     final int appWidgetId=intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID);
     if(appWidgetId!=AppWidgetManager.INVALID_APPWIDGET_ID){
         this.onDeleted(c,new int[]{appWidgetId});
     }
 }else{
     super.onReceive(c, intent);
 }
...