Android apk有什么资格成为';小部件';?

Android apk有什么资格成为';小部件';?,android,android-appwidget,Android,Android Appwidget,在android开发者网站中,应用程序小部件由以下组件组合实现: AppWidgetProviderInfo对象 AppWidgetProvider类 初始视图布局 AndroidManifest.xml中显示的应用程序小部件的典型示例是: <receiver android:name="ExampleAppWidgetProvider" > // item '2' <intent-filter> <action android:name

在android开发者网站中,应用程序小部件由以下组件组合实现:

  • AppWidgetProviderInfo对象
  • AppWidgetProvider类
  • 初始视图布局
  • AndroidManifest.xml中显示的应用程序小部件的典型示例是:

    <receiver android:name="ExampleAppWidgetProvider" >   // item '2'
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>
        <meta-data android:name="android.appwidget.provider"
                   android:resource="@xml/example_appwidget_info" />   // item '1'
    </receiver>
    
    //项目“2”
    //项目“1”
    
    项目“1”通常描述项目“3”的位置:

    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
        android:minWidth="294dp"
        android:minHeight="72dp"
        android:updatePeriodMillis="86400000"
        android:previewImage="@drawable/preview"
        android:initialLayout="@layout/example_appwidget"    // item '3'
        android:configure="com.example.android.ExampleAppWidgetConfigure" 
        android:resizeMode="horizontal|vertical">
    </appwidget-provider>
    
    
    
    我见过很多这样的应用程序小部件示例

    然而,我仍然不明白“AppWidget框架”使用什么签名来查找手机上的所有应用程序小部件,并将它们放在主菜单中的“小部件”选项卡下

    要使应用程序显示在主菜单中的“所有应用程序”选项卡下,您可以将下面的内容添加到其活动的意图过滤器中

    <category android:name="android.intent.category.LAUNCHER" />
    
    
    
    然而,应用程序小部件对应的魔法关键词是什么?启动器如何识别应用程序小部件并将其置于“小部件”选项卡下

    我知道这可能不是因为第1,2,3项签名,因为我遇到了一个别人开发的旧应用程序小部件,我看不到1,2,3模式。我也不知道“AppWidget框架”是如何确定它是一个应用程序小部件的

    我在下面列出了旧应用程序小部件的清单文件,如果你能指出我应该在哪里寻找线索,我将非常感激

    <?xml version="1.0" encoding="utf-8"?>
    <manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.weather">
        <uses-permission android:name="android.permission.WAKE_LOCK"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.GET_TASKS" />
        <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
        <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        <application
            android:process="com.example.weather.sinaweather" 
            android:label="@string/app_name"
            android:icon="@drawable/widget_weather_icon">
    
            <provider
                android:name=".provider.WeatherProvider"
                android:authorities="com.example.weather" />
            <activity
                android:name=".WeatherDetail"
                android:excludeFromRecents="true">
            </activity>        
            <activity
                android:name=".WeatherDetailActivity"
                android:launchMode="singleTop"
                android:excludeFromRecents="true"
                android:configChanges="orientation|screenSize|keyboardHidden|navigation">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <activity
                android:name=".AlertActivity"
                android:excludeFromRecents="true"
                android:theme="@android:style/Theme.Dialog">
                <intent-filter>
                    <!--action android:name="android.intent.action.MAIN" /-->
                    <!--category android:name="android.intent.category.LAUNCHER" /-->
                </intent-filter>
                <intent-filter>
                    <action android:name="com.example.weather.action.START_WEATHER_SETTINGS" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
                <intent-filter>
                    <action android:name="com.example.weather.action.START_WEATHER_APPLICATION" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>
            <activity
                android:name=".WeatherDisplayCurrentDialog"
                android:excludeFromRecents="true"
                android:theme="@android:style/Theme.Dialog">
                <intent-filter>
                    <action android:name="com.example.weather.DISPLAY_CURRENT_CONFIGURE" />
                </intent-filter>
            </activity>
            <activity
                android:name=".AddCityActivity"
                android:excludeFromRecents="true"
                android:configChanges="orientation|screenSize|keyboardHidden|navigation|locale">
                <intent-filter>
                    <action android:name="com.example.weather.action.START_WEATHER_SETTINGS_INTELNAL" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter> 
            </activity>
            <activity
                android:name=".SearchCityActivity"
                android:excludeFromRecents="true"
                android:configChanges="orientation|screenSize|keyboardHidden|navigation">
            </activity>
            <service android:name=".WeatherService">
                <intent-filter>
                    <action android:name="com.example.weather.INIT_APP" />
                    <action android:name="com.example.weather.WEATHER_RETRY" />
                    <action android:name="com.example.weather.RESET_AUTO_UPDATE_ALARM" />
                    <action android:name="com.example.weather.WEATHER_AUTOUPDATE" />
                    <action android:name="com.example.weather.action.NEED_WEATHER_INFO" />
                    <action android:name="com.example.weather.action.TOP_CITY_CHANGED" />
                    <action android:name="com.example.weather.LOCATION_UPDATE" />          
                </intent-filter>
            </service>
    
            <receiver
                android:name=".WeatherReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED" />
                    <action android:name="com.example.weather.RESTART_SERVICE" />
                </intent-filter>
            </receiver>
    
        </application>
    </manifest>
    
    
    
    阅读有关创建和声明小部件的详细说明。清单中需要您所称的“1-2-3”模式