簡體   English   中英

從Android應用程序訪問小部件

[英]Accessing widget from android application

我正在嘗試將天氣小部件添加到我的應用程序中。 我使用以下代碼查找目標天氣小部件:

public class widgetTask extends AsyncTask<Context, Void, AppWidgetHostView> {
final static int APPWIDGET_HOST_ID = 1;
final static String WEATHER_PACKEGE = "accuweather.android";
final static String WEATHER_CLASS = "accuweather.android.widgets.AL_WidgetProvider";

@Override
protected AppWidgetHostView doInBackground(Context... arg0) {
    AppWidgetHostView hostView = null;
    AppWidgetManager AWmanager = AppWidgetManager.getInstance(arg0[0]);
    AppWidgetHost AWHost = new AppWidgetHost(arg0[0], APPWIDGET_HOST_ID);
    AppWidgetProviderInfo AWProviderInfo = new AppWidgetProviderInfo();

    int AWId = AWHost.allocateAppWidgetId();

    List<AppWidgetProviderInfo> AWProviderInfos = new ArrayList<AppWidgetProviderInfo>();
    AWProviderInfos  = AWmanager.getInstalledProviders();

    for(int j = 0; j < AWProviderInfos.size(); j++)
    {

        if (AWProviderInfos.get(j).provider.getPackageName().equals("com."+WEATHER_PACKEGE) && AWProviderInfos.get(j).provider.getClassName().equals("com."+WEATHER_CLASS))
        {
            AWProviderInfo = AWProviderInfos.get(j);
            break;
        }
    }
    hostView = AWHost.createView(arg0[0], AWId, AWProviderInfo);
    hostView.setAppWidget(AWId, AWProviderInfo);

    return hostView;
}

}

之后,我嘗試將AppWidgetHostView添加到我的Activity中:

AppWidgetHostView weatherWidget = WT.execute(this).get();
LLWeather.addView(weatherWidget);

它可以正常工作,但是小部件顯示“正在下載天氣數據”(授予此活動的互聯網權限)並凍結了,因此我無法與其進行交互。 有什么想法如何修復它並訪問小部件功能嗎?

不要在您的asynctask調用上使用get(),因為它將不再是異步的。 doInBackground的結果將在onPostExecute中可用。 在onPostExecute中,您調用LLWeather.addView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM