多个尺寸的Android小部件可以确定他们在配置活动中选择的大小

时间:2012-03-02 02:20:23

标签: android android-widget

我已经构建了一个Android小部件,允许多个大小2x2和4x2。因此当有人在小部件选择器屏幕上时,他们会看到两种尺寸。他们点击其中一个尺寸,然后转到我的配置活动。我如何知道他们在小部件选择器屏幕上选择的大小。我需要知道在配置活动中选择了哪一个。我遇到了如何前进以及要研究的方向。以下是我的清单文件,以防您认为它可能会澄清我在做什么:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.corradodev.customizable_countdown_widget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="3" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
        <!-- Configure Activity -->
        <activity android:name=".configure">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
            </intent-filter>
        </activity>
        <!-- Broadcast Receivers that will process AppWidget updates -->
        <receiver android:name=".customizable_countdown_widget_large" android:label="@string/app_name_large">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" 
                       android:resource="@xml/widget_provider_large" />
        </receiver>
        <receiver android:name=".customizable_countdown_widget_small" android:label="@string/app_name_small">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" 
                       android:resource="@xml/widget_provider_small" />
        </receiver>
         <!-- Service for updating -->
        <service android:name=".widget_service" />

    </application>
</manifest>

感谢您的帮助。

解决方案: 在配置活动的oncreate中

   Bundle mExtras = mIntent.getExtras();
if (mExtras != null) {
    mAppWidgetId = mExtras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
}
//Log.d(TAG, Integer.toString(mAppWidgetId));

// If they gave us an intent without the widget id, close
if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
    finish();
}
AppWidgetProviderInfo providerInfo = AppWidgetManager.getInstance(getBaseContext()).getAppWidgetInfo(mAppWidgetId);
String minWidth=String.valueOf(providerInfo.minWidth);

1 个答案:

答案 0 :(得分:0)

一旦拥有了wdiget ID,你可以使用AppWidgetProviderInfo AppWidgetManager.getAppWidgetInfo(int appWidgetId)并检查`minSize'等。您可以从配置活动中获取它,如下所示:

int id = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
                    AppWidgetManager.INVALID_APPWIDGET_ID);