2012-05-24 1 views
0

Я имею appwidgetprovider класса, как показано ниже, который вызывает активность, чтобы открытькак обнаружить appWidgetId активности вызывается из ожидания Намерения appwidgetprovider

for (int widgetId : allWidgetIds) { 

     remoteViewParent = new RemoteViews(context.getPackageName(),R.layout.widget_initial_layout); 

     try{ 
      Intent clickIntent = new Intent(context,Activity.class);//same class name is passed to give the call to itself 
      clickIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

          //PASSING ID HERE 
      clickIntent.putExtra("checkintent", ""+widgetId); 


      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clickIntent,PendingIntent.FLAG_UPDATE_CURRENT); 
      remoteViewParent.setOnClickPendingIntent(R.id.widget_img_logo, pendingIntent); 

      appWidgetManager.updateAppWidget(widgetId, remoteViewParent); 

     }catch (Exception e) { 
     } 

    } 

Я хочу, чтобы деятельность в делат в widgetId в моей деятельности классе, поэтому я передать его через putExtra() После этого добавить 3 виджеты, один за другим, и когда я нажимаю на любой из виджетов на домашнем экране, я просто получить идентификатор последнего Widget Добавлено (через мой умыслом)

есть ли способ отличить клики по конкретному добавленному виджету, любая работа вокруг чего-нибудь?

Пойманный в этом, так долго.

Я хочу это для android 2.2 и выше. Любые предложения приветствуются

ответ

0

При сравнении PedingIntent не учитываются дополнительные функции, поэтому вы получаете то же намерение, даже если вы меняете дополнительные функции. FLAG_UPDATE_CURRENT означает, что текущий PendingIntent обновляется, таким образом вы получаете только последний идентификатор. Если вы хотите надежно передать идентификатор, вы должны поместить его в данные Intent, тогда вы сможете получить разные PendingIntent для разных идентификаторов. Что-то вроде этого:

Uri data = Uri.withAppendedPath (Uri.parse("mywidget://mywidget/widgetId/#"), 
       String.valueOf(widgetId)); 
intent.setData(data); 

Затем извлеките ID из данных Intent, чтобы различать виджеты.

+0

, что делает ' "MyWidget"' здесь баллотироваться, это что-то статичным, я пытаюсь об использовании этого 'данных Uri = Uri.withAppendedPath (Uri.parse (intent.toUri (Intent.URI_INTENT_SCHEME)), String .valueOf (widgetId)); 'un luck –

+0

Спасибо, что это работает так же хорошо. –

Смежные вопросы