这个插件是属于设置的一部分,可以在
1 | packages\apps\Settings\res\drawable-hdpi |
这个文件夹里面查看,呵呵,有没有看到上面目录的斜杠方向,懂吧。
这里找到一个文件名为:“ic_appwidget_settings_mobile_off” 的PNG文件。
而相关的文件是:
1 | vim packages/apps/Settings/src/com/android/settings/widget/SettingsAppWidgetProvider.java |
代码要修改有几个部分,可以搜索“BUTTON_MOBILE”,进行修改。
1. 是否显示这个部件
02 | * Provides control of power-related settings from a widget. |
04 | public class SettingsAppWidgetProvider extends AppWidgetProvider { |
05 | static final String TAG = "SettingsAppWidgetProvider" ; |
07 | static final ComponentName THIS_APPWIDGET = |
08 | new ComponentName( "com.android.settings" , |
09 | "com.android.settings.widget.SettingsAppWidgetProvider" ); |
11 | private static LocalBluetoothManager sLocalBluetoothManager = null ; |
12 | private static TelephonyManager mTelephonyManager = null ; |
14 | private static final int BUTTON_WIFI = 0 ; |
15 | private static final int BUTTON_BRIGHTNESS = 1 ; |
16 | private static final int BUTTON_SYNC = 2 ; |
17 | private static final int BUTTON_GPS = 3 ; |
18 | private static final int BUTTON_BLUETOOTH = 4 ; |
2. 点击之后的事件处理
02 | * Receives and processes a button pressed intent or state change. |
05 | * @param intent Indicates the pressed button. |
08 | public void onReceive(Context context, Intent intent) { |
09 | super .onReceive(context, intent); |
10 | if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) { |
11 | sWifiState.onActualStateChange(context, intent); |
12 | } else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) { |
13 | sBluetoothState.onActualStateChange(context, intent); |
14 | } else if (intent.hasCategory(Intent.CATEGORY_ALTERNATIVE)) { |
15 | Uri data = intent.getData(); |
16 | int buttonId = Integer.parseInt(data.getSchemeSpecificPart()); |
17 | if (buttonId == BUTTON_WIFI) { |
18 | sWifiState.toggleState(context); |
19 | } else if (buttonId == BUTTON_BRIGHTNESS) { |
20 | toggleBrightness(context); |
21 | } else if (buttonId == BUTTON_SYNC) { |
23 | } else if (buttonId == BUTTON_GPS) { |
25 | } else if (buttonId == BUTTON_BLUETOOTH) { |
26 | sBluetoothState.toggleState(context); |
32 | } else if (TelephonyIntents.ACTION_MODEM_POWER_STATE_CHANGED.equals(intent.getAction())) { |
3. 重新载入图片
02 | * Load image for given widget and build {@link RemoteViews} for it. |
04 | static RemoteViews buildUpdate(Context context, int appWidgetId) { |
05 | RemoteViews views = new RemoteViews(context.getPackageName(), |
07 | views.setOnClickPendingIntent(R.id.btn_wifi, getLaunchPendingIntent(context, appWidgetId, |
09 | views.setOnClickPendingIntent(R.id.btn_brightness, |
10 | getLaunchPendingIntent(context, |
11 | appWidgetId, BUTTON_BRIGHTNESS)); |
12 | views.setOnClickPendingIntent(R.id.btn_sync, |
13 | getLaunchPendingIntent(context, |
14 | appWidgetId, BUTTON_SYNC)); |
15 | views.setOnClickPendingIntent(R.id.btn_bluetooth, |
16 | getLaunchPendingIntent(context, |
17 | appWidgetId, BUTTON_BLUETOOTH)); |
23 | updateButtons(views, context); |
4. 还有这个,全注释掉吧。
01 | switch (getMobileState(context)) { |
03 | views.setImageViewResource(R.id.img_mobile, R.drawable.ic_appwidget_settings_mobile_off); |
04 | views.setImageViewResource(R.id.ind_mobile, R.drawable.appwidget_settings_ind_off_c); |
07 | views.setImageViewResource(R.id.img_mobile, R.drawable.ic_appwidget_settings_mobile_on); |
08 | views.setImageViewResource(R.id.ind_mobile, R.drawable.appwidget_settings_ind_on_c); |
10 | case STATE_INTERMEDIATE: |
11 | views.setImageViewResource(R.id.img_mobile, R.drawable.ic_appwidget_settings_mobile_off); |
12 | views.setImageViewResource(R.id.ind_mobile, R.drawable.appwidget_settings_ind_mid_c); |