Android   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 自定义启动器中的绑定小部件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我在使用自定义启动器的主屏幕上添加小部件时遇到了一些问题.

我已经能够使用AppWidgetManager生成添加的小部件列表,并且我已经开发了将小部件添加到主屏幕的工作流程.代码不是下面的代码,但看起来如下所示:

AppWidgetHost widget_host = new AppWidgetHost(this, 1);
AppWidgetManager widget_manager = AppWidgetManager.geTinstance(this);

int widget_id = widget_host.allocateAppWidgetId(); 
appwidgetproviderInfo widget_provider = ... //from an array;

Intent bindIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
bindIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget_id);
bindIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, widget_provider.provider);
startActivityForResult(bindIntent, requEST_BIND_APPWIDGET);

if (widget_provider.configure != null) {
    Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONfigURE);
    intent.setComponent(widget_provider.configurE);
    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget_id);
    startActivityForResult(intent, requEST_CREATE_APPWIDGET);
} else {
    createWidget(widget_id);
}

然后,我有一个onActivityResult方法,如果需要,可以导致小部件的配置,createWidget方法使用AppWidgetHost的createView方法.

此工作流程有效,但ACTION_APPWIDGET_BIND意图要求用户绑定应用程序的权限,这有点烦人.我的理解是,只有系统应用程序可以请求此权限,并且我在运行应用程序时不会在未请求此权限的情况下绑定小部件.另一方面,我知道还有许多其他发射器,他们都可以无缝地添加小部件,所以必须有另一种方法.

任何建议将不胜感激!

干杯

解决方法:

希望这个问题仍然存在……

你在方法做了太多的事情.在特定情况下,你会一个一个地发动事件.我在Android上的工作时间不长,所以我不能告诉你,这是否可以.

而你总是在这里激发意图:

Intent bindIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
bindIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget_id);
bindIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, widget_provider.provider);
startActivityForResult(bindIntent, requEST_BIND_APPWIDGET);

上述意图最可能导致问题.您可以事先检查,是否需要请求许可.你可以问这个例程:

Boolean callProviderIntent = false;
if (checkCallProviderIntent)
{
    callProviderIntent = true;
    Method m = null;
    try
    {
        m = AppWidgetManager.class
            .getmethod("bindAppWidgetIdIfallowed", new Class[]
            { Integer.TYPE, ComponentName.class });
    }
    catch (NoSuchMethodException E)
    {
    }
    if (m != null)
    {
        try
        {
            callProviderIntent = !(Boolean) m
             .invoke(mAppWidgetManager,
                     appWidgetId,
                     launcherAppWidgeTinfo.provider);
        }
        catch (Exception E)
        {
        }
    }
}

这是虚拟代码.它使用反射,因为我在Android 2.3下.

大佬总结

以上是大佬教程为你收集整理的android – 自定义启动器中的绑定小部件全部内容,希望文章能够帮你解决android – 自定义启动器中的绑定小部件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: