PDA

View Full Version : نسبت دادن دو عدد pendingIntent به یک ویو در AppWidget



#root#
یک شنبه 14 اردیبهشت 1393, 23:14 عصر
سلام
یدونه ویجت (یه 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);

#root#
دوشنبه 15 اردیبهشت 1393, 09:29 صبح
اینطوری یه مقدار میفرستم به متد 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();
}
}

}


اشکال کار کجاست به نظرتون؟

#root#
دوشنبه 15 اردیبهشت 1393, 18:52 عصر
اومدم یه سری متغیر دیگه با bundle به متد onReceive فرستادم برای تست مثلا مقدار تو جایی که میفرستم true هستش تو onUpdate مقدار پیشفرض یعنی false رو میگیره ، این وسط چه بلایی میاد سر اطلاعات؟