আমি জানি এটি সম্ভব, তবে আমি আমার ক্রিয়াকলাপের আপডেটটি মূল ক্রিয়াকলাপ থেকে সক্রিয় করার উপায় খুঁজে বের করতে পারি না। আমি প্রচার করতে পারি এমন কোনও সাধারণ অভিপ্রায় নেই?
উত্তর:
আপনি যদি এটি ব্যবহার করে থাকেন তবে আপনি AppWidgetProvider
এটি এভাবে আপডেট করতে পারেন:
Intent intent = new Intent(this, MyAppWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
// Use an array and EXTRA_APPWIDGET_IDS instead of AppWidgetManager.EXTRA_APPWIDGET_ID,
// since it seems the onUpdate() is only fired on that:
int[] ids = AppWidgetManager.getInstance(getApplication())
.getAppWidgetIds(new ComponentName(getApplication(), MyAppWidgetProvider.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
যখন আমি কোনও পরিষেবা / বা ক্রিয়া থেকে কোনও উইজেট আপডেট করতে পারি তখন এটি অনুসন্ধান করেছিল (তবে প্রতিটি প্রসঙ্গেই এটি সম্ভব হতে পারে):
Context context = this;
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_2x1);
ComponentName thisWidget = new ComponentName(context, MyWidget.class);
remoteViews.setTextViewText(R.id.my_text_view, "myText" + System.currentTimeMillis());
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
সুতরাং কোনও ক্রিয়াকলাপ থেকে কোনও উইজেট আপডেট করতে আপনি এটি এর মতো করতে পারেন:
Intent intent = new Intent(this, DppWidget.class);
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
int ids[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), DppWidget.class));
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
sendBroadcast(intent);
আমার জন্য কাজ কর :)
এটা চেষ্টা কর:
int[] ids = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), MyWidget.class));
MyWidget myWidget = new MyWidget();
myWidget.onUpdate(this, AppWidgetManager.getInstance(this),ids);
আপনি যদি উইজেটের সাথে কাজ করছেন যা উইজেটের আইটেমগুলিকে আপডেট করতে তালিকাভিউ, গ্রিডভিউ বা স্ট্যাকভিউয়ের মতো সংগ্রহ ব্যবহার করে, নিম্নলিখিতভাবে করুন:
Context context = getApplicationContext();
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisWidget = new ComponentName(context, StackWidgetProvider.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.stack_view);
এই পদ্ধতির মাধ্যমে অ্যাপ্লিকেশন উইজেটভিউ ডেটাচেনজড () বিজ্ঞপ্তিটি দিয়ে আপনি উইজেট আইটেমগুলিকে রিয়েল টাইমে কোনও নতুন ডেটা আনতে বাধ্য করতে পারেন।
int widgetIDs[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), WidgetProvider.class));
for (int id : widgetIDs)
AppWidgetManager.getInstance(getApplication()).notifyAppWidgetViewDataChanged(id, R.id.widget_view);
}
notifyAppWidgetViewDataChanged()
যা অ্যারে নেয়।
ফেটনের কোটলিনে গৃহীত সমাধান:
val intent = Intent(this, MyAppWidgetProvider::class.java)
intent.action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
val ids = AppWidgetManager.getInstance(application).getAppWidgetIds(ComponentName(getApplicationContext(),MyAppWidgetProvider::class.java!!))
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
sendBroadcast(intent)
মাই অ্যাপ্ল্যাভিজেটপ্রভাইডারটি যেখানে অ্যাপ উইজেটপ্রভাইডার থেকে প্রাপ্ত:
class MyAppWidgetProvider : AppWidgetProvider() {
আপনি যদি আপনার উইজেটপ্রোভিডার.ক্লাসের স্পষ্টভাবে অ্যাক্সেস না পেয়ে থাকেন এমন প্রোগ্রামটি উইজেটকে আপডেট করার চেষ্টা করছেন, যেমন অন্য মডিউল বা লাইব্রেরি থেকে, আপনি কীভাবে আপনার উইজেটপ্রোভিডার।
val WIDGET_CLASS_NAME = "com.example.yourapplication.YourWidgetProvider"
তারপরে আপনি এটিকে স্পষ্টভাবে ব্যবহার করতে সক্ষম হবেন:
val intent = Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE)
val widgetManager = AppWidgetManager.getInstance(context)
val ids = widgetManager.getAppWidgetIds(ComponentName(context, WIDGET_CLASS_NAME))
AppWidgetManager.getInstance(context).notifyAppWidgetViewDataChanged(ids, android.R.id.list)
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
context.sendBroadcast(intent)
widgetId
?