نسبت دادن دو عدد pendingIntent به یک ویو در AppWidget
سلام
یدونه ویجت (یه layout که توش فقط یدونه button هست ) دارم که توش فقط یدونه ویو دارم توش و میخوام علاوه به یک pendingIntent که باعث آپدیت ویجت میشه ، اگر یه مقداری هم true بود یه pendingIntent دیگه هم جهت اجرای یه activity به اون ویو نسبت بدم ولی فقط pendingIntent دوم کار میکنه ، راه حلی هست به نظرتون؟
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget);
SharedPreferences sp = context.getSharedPreferences("" + appWidgetId, Context.MODE_PRIVATE);
if (sp.getBoolean(WidgetConstants.START, false)) {
Intent c = new Intent(context, Activity_Main.class);
PendingIntent cpi = PendingIntent.getActivity(context, appWidgetId, c, 0);
rv.setOnClickPendingIntent(R.id.iv1, cpi);
}
Intent i = new Intent(context, Widget.class);
i.setAction(WidgetConstants.ACTION_UPDATE);
i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pi = PendingIntent.getBroadcast(context, appWidgetId, i,0);
rv.setOnClickPendingIntent(R.id.iv1, pi);
نقل قول: نسبت دادن دو عدد pendingIntent به یک ویو در AppWidget
اینطوری یه مقدار میفرستم به متد onReceive ولی وقتی تمام محتوای intent دریافتی رو log میکنم فقط یدونه id ویجت چاپ میشه ،
Intent update = new Intent(context, Widget.class);
update.setAction(WidgetConstants.ACTION_UPDATE);
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_I D, appWidgetId);
if (sp.getBoolean(WidgetConstants.START_COUNTER, false)) {
update.putExtra("launch", 1);
// inja ro ham to log neghah kardam , varede shart ham mishe
}
PendingIntent pi = PendingIntent.getBroadcast(context, appWidgetId, update, 0);
rv.setOnClickPendingIntent(R.id.img_widget, pi);
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
Bundle bundle = intent.getExtras();
if (bundle != null) {
for (String key : bundle.keySet()) {
Object value = bundle.get(key);
Log.d("tag", String.format("%s %s (%s)", key, value.toString(),
value.getClass().getName()));
}
}
int appWidgetId = intent.getIntExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
if (intent.getAction().equals(WidgetConstants.ACTION_ UPDATE)) {
AppWidgetManager.getInstance(context).updateAppWid get(appWidgetId,
buildUpdate(context, appWidgetId));
}
if (intent.getIntExtra("launch", 0) == 1) {
Intent launch = new Intent(context, Activity_Main.class);
PendingIntent pi = PendingIntent.getActivity(context, appWidgetId,
launch, 0);
try {
pi.send();
} catch (CanceledException e) {
e.printStackTrace();
}
}
}
اشکال کار کجاست به نظرتون؟
نقل قول: نسبت دادن دو عدد pendingIntent به یک ویو در AppWidget
اومدم یه سری متغیر دیگه با bundle به متد onReceive فرستادم برای تست مثلا مقدار تو جایی که میفرستم true هستش تو onUpdate مقدار پیشفرض یعنی false رو میگیره ، این وسط چه بلایی میاد سر اطلاعات؟