从API级别26开始,应用程序就可以请求将一个应用程序部件固定在当前的启动程序上。作为开发人员,这让我们有机会在自己的应用程序中提出这样的请求。然而,文档中写着"https://developer.android.com/reference/android/appwidget/AppWidgetManager#requestPinAppWidget“,有时当在当前的启动程序上没有足够空间的小部件时,调用者应用程序也不会得到任何响应。
如何区分这两种情况?我可以使用什么回调函数吗?有什么办法,我可以得到多少空间,在目前的发射器在我的应用程序?
发布于 2022-03-08 07:17:09
private fun pickWidget()
{
val component = ComponentName(applicationContext,MyWidget::class.java)
val manager = AppWidgetManager.getInstance(applicationContext)
val widgetId = (1..999999).random()
val intent = Intent(applicationContext,MyReceiver::class.java)
val b = Bundle()
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,widgetId)
val successCallback = PendingIntent.getBroadcast(applicationContext,101,intent,PendingIntent.FLAG_UPDATE_CURRENT)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
manager.requestPinAppWidget(component,b,successCallback)
}
}
class MyReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Log.e(TAG, "onReceive: ")
val b= intent.extras
b?.let {
val widgetId = b.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID)
if(widgetId!=AppWidgetManager.INVALID_APPWIDGET_ID) {
//if widget is placed succssfully
}
}
}
}https://stackoverflow.com/questions/64088622
复制相似问题