定制android桌面系统

     最近项目用到桌面定制,于是研究了AppWidgetProvider,话不多说,直接进入正题.

其实打开AppWidgetProvider源码我们会发现,他是继承于broadcastReceiver的广播接收器,其中会定义一个onUpdate的方法,该方法会在桌面加载或者更新的时候调用,里面定义了三个参数,分别是context,appWidgetManager和appWidgetIds,其中appWidgetsIds是桌面ID.而且此时我们需要开启一个服务,定时的更新桌面按钮触发事件.

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    Log.d(TAG, " ------ onUpdate(): appWidgetIds.length=" + appWidgetIds.length);

    // 每次 widget 被创建时,对应的将widget的id添加到set中
    for (int appWidgetId : appWidgetIds) {
        idsSet.add(Integer.valueOf(appWidgetId));
    }
    prtSet(context);

    // 解决CashierWidgetProvider没有定时刷新问题(不刷新则不会变化layout 已经按钮触发事件)
    Log.d(TAG, " ------ onUpdate(): CashierWidgetService");
    Intent intent = new Intent(context, MyWidgetService.class);
    PendingIntent refreshIntent = PendingIntent.getService(context, 0, intent, 0);
    AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarm.setRepeating(AlarmManager.RTC, 0, 1000, refreshIntent);
    context.startService(intent);
}
在onReceive里会接收服务发来的广播,此时我们需要更新桌面,并对刷新按钮的触发事件,如果广播接收的action是Intent.CATEGORY_ALTERNATIVE
此时可根据data.getSchemeSpecificPart()做相应的点击事件
@Override
public void onReceive(Context context, Intent intent) {
    if (context == null) {
        return;
    }
    final String action = intent.getAction();
    Log.d(TAG, " ------ OnReceive:Action: " + action);
    if (ACTION_UPDATE_ALL.equals(action)) {
        // “更新”广播,当覆盖安装时:AppWidgetManager.getInstance(context)会报空指针
        updateAllAppWidgets(context, AppWidgetManager.getInstance(context), idsSet);

    } else if (intent.hasCategory(Intent.CATEGORY_ALTERNATIVE)) {
        // “按钮点击”广播
        Uri data = intent.getData();
        int clickId = Integer.parseInt(data.getSchemeSpecificPart());
        Log.d(TAG, " ------ OnReceive:clickId: " + clickId);
        switch (clickId) {
            case REQUEST_CLICK_RL0_EVENT:
                startPetApp(context, Activity_One.class);
                break;
            case REQUEST_CLICK_RL1_EVENT:
                startPetApp(context, Activity_Two.class);

                break;
            case REQUEST_CLICK_RL2_EVENT:
                startPetApp(context, Activity_One.class);
                break;
            case REQUEST_CLICK_RL3_EVENT:
                startPetApp(context, Activity_Two.class);

                break;
            case REQUEST_CLICK_RL4_EVENT:
                startPetApp(context, Activity_One.class);

                break;
            case REQUEST_CLICK_RL5_EVENT:
                startPetApp(context, Activity_Two.class);

                break;
            case REQUEST_CLICK_RL6_EVENT:
                startPetApp(context, Activity_One.class);

                break;

            default:
                break;
        }
    }

    super.onReceive(context, intent);
}
源码地址   https://github.com/kyrieLiu/petWidget1.git
运行demo方法:运行后长按桌面,点击小组件,找到桌面dmeo,把它拖到桌面上来,然后可以查看效果



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android系统的流行和成功在于其开源性和可定制性。而流裁剪和定制则是指对Android系统进行修改和个性化适应的过程。 流裁剪是指对Android系统进行精简和优化,去除一些不必要的功能和应用,以便提高系统的性能和稳定性。通过流裁剪,可以减少手机内存的占用,提高系统的运行速度,并且可以使系统更加灵活和定制化。流裁剪可以根据特定的需求,去除一些不需要的系统应用和服务,从而减少系统的负担,提高系统的响应速度。同时,流裁剪还可以优化系统的电池寿命,让手机的待机时间更长。 定制是指对Android系统进行个性化定制,根据用户的需要和喜好,修改和添加系统的界面、功能和应用等元素。通过定制,用户可以自定义自己的手机界面,添加自己喜欢的应用和小部件,甚至可以修改系统的主题样式和字体等。定制还可以包括对系统进行深度的改造,例如增加新的功能和特性,适应特定的用户群体需求。定制化的Android系统可以让用户体验更加个性化,提高用户的满意度和用户粘性。 总之,流裁剪和定制Android系统的两个重要特性,可以帮助用户根据自己的需求和喜好,对系统进行优化和个性化适应,提高系统的性能和用户体验。 ### 回答2: Android系统的流裁剪与定制是指对Android系统进行修改和个性化的过程。流裁剪是指精简Android系统,去除一些不必要的软件和功能,从而提高系统的性能和响应速度。定制则是指根据用户的需求和喜好,对Android系统进行个性化设置和修改。 在进行Android系统的流裁剪时,首先需要了解系统的结构和组件,确定要保留的核心功能和应用程序。通过删除或禁用一些预装的应用程序和服务,可以减少系统占用的资源,从而提高系统的运行效率。流裁剪还可以通过删除一些无用的库文件和内核模块来减少系统的体积,从而节省存储空间和加快系统启动速度。流裁剪可以根据用户的需求或者手机的硬件配置来进行调整,以达到更好的系统性能和用户体验。 而Android系统定制则可以更进一步满足用户的个性化需求。用户可以根据自己的喜好选择桌面主题、图标、壁纸等个性化选项,还可以通过更换键盘、声音和振动设置等来个性化自己的手机。定制还可以包括加入特定的功能或应用程序,比如增加新的快捷方式、改变系统默认设置等。 与流裁剪相比,定制更为广泛,可以根据个人的需求和喜好进行个性化设置。定制可以改变系统的外观和功能,使得用户的手机可以更加符合自己的使用习惯和喜好。不过,在进行系统定制时需要注意保持系统的稳定性和安全性,避免出现不可预料的问题。因此,在定制过程中应该谨慎操作,确保系统的正常运行。 ### 回答3: Android系统流裁剪与定制是指在安卓(Android)操作系统上进行功能、界面或系统级别的修改和优化以满足特定需求。 首先来说流裁剪(Flashing):流裁剪是指将一个经过定制Android 系统镜像写入到设备的存储器中,以替换原始的 Android 系统。这样做可以让用户根据自身需要,为其设备选择适合的 Android 系统,以获得更好的性能或者特定功能。流裁剪通常需要在设备的启动引导器(Bootloader)解锁之后进行。 其次是系统定制(Customization):系统定制是指对已经安装在设备上的 Android 系统进行更改。这种定制化的改变可以包括但不限于以下几个方面:修改主题和图标、添加新的应用程序或功能、修改默认设置等等。通过系统定制,用户可以根据自己的喜好和需求,调整设备的外观和功能。 为什么人们对 Android 系统流裁剪和定制感兴趣呢? 首先,流裁剪和定制可以让用户获得更好的性能和更好的用户体验。通过消除不必要的预装应用程序和功能,流裁剪可以减少系统的负担,提高设备的运行速度和稳定性。而系统定制则可以根据个人喜好,配置设备的外观和功能,使其更加符合用户的需求。 其次,流裁剪和定制也是满足不同用户需求的必要手段。每个用户对设备的使用方式和功能要求都不尽相同,通过流裁剪和定制,可以根据个人需求,选择适合自己的 Android 系统版本和功能配置。这样,就可以更好地满足用户在工作、娱乐和学习等方面的需求。 总之,Android 系统流裁剪和定制是为了让用户能够根据自身喜好和需求,定制和优化设备的系统和功能。通过流裁剪和定制,用户可以获得更好的性能、更好的用户体验,并且能够满足个人的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值