假设我有一个Android项目,该项目具有可以添加到应用启动器中的appWidget。
该项目还有一个活动,显示我创建的appWidget。

探针:
对于启动器,appWidget可以完美运行,并且可以响应用户的点击,但是对于活动,仅显示它,就像预览一样。

我尝试(并成功)显示了其他appWidget,但它们也仅在显示中。
但是,单击按钮似乎具有单击样式效果,好像可以处理触摸事件一样。
请注意,除了用户点击之外,appWidget将来可能还会具有其他功能。

谁能告诉我该怎么办才能解决这个问题?甚至有可能做这样的事情,否则,为什么做(因为它是应用程序的一部分)?
请注意,由于appWidget可能是一个复杂的组件,因此我希望对appWidget进行尽可能少的更改。

这是获取appWidget视图以显示它的代码段:

public View fetchAppWidgetView(final Context context, final ComponentName componentName)
{
  final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
  _appWidgetHost = new AppWidgetHost(context, INSTANCES_ID_PROVIDER);
  // get appWidgetInfo :
  final List<AppWidgetProviderInfo> infos = appWidgetManager.getInstalledProviders();
  AppWidgetProviderInfo appWidgetInfo = null;
  for (final AppWidgetProviderInfo info:infos)
    if (info.provider.getClassName().equals(componentName.getClassName()) && info.provider.getPackageName().equals(componentName.getPackageName()))
    {
      appWidgetInfo = info;
      break;
    }
  if (appWidgetInfo == null)
    return null;
  final int appWidgetId = _appWidgetHost.allocateAppWidgetId();
  // create and put the new widget:
  final AppWidgetHostView newWidget = _appWidgetHost.createView(context, appWidgetId, appWidgetInfo);
  newWidget.setAppWidget(appWidgetId, appWidgetInfo);
  _appWidgetHost.startListening();
  return newWidget;
}

public void startListening()
{
  //this method is called on the onStart() method of the activity
  _appWidgetHost.startListening();
}

最佳答案

出于安全原因,可以-您的应用没有权限放置应用小部件
没有用户在屏幕上的知识。唯一的方法就是让用户选择
列表中的小部件,或者您的应用必须安装在/ system / app文件夹中,
这样,该应用程序便是具有所有必需权限的系统应用程序。

关于android - android appWidget-在没有用户确认的情况下放置我自己的appWidget,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9215124/

10-09 06:18