在独立开发之初,uniapp被选中 ,但是遇到了这样的需求,这是桌面上的一个小部件功能。起初,我认为这个功能不起作用,用了之后感觉挺好的。所以我也想实现。但是网上教程很少。基本上没有人手拉手实现。我只能靠自己去探索。对于没有接触过Android本土开发的人来说,真的很不友好。
研究了一段时间,有两种方法可以实现桌面的小部件
1.使用uniapp的uts语言。
2.使用Android本地插件。
虽然第一种方法很方便,但每次调试都需要太多时间来定制底座
第二种方法是引入Androidar插件 这样,小部件和uniapp就可以单独设计了。
设计思路:。
1.首先按照uniapp Android原生插件开发和离线包装调试的步骤制作Aar包。
2.在安卓studio上创建桌面小部件,然后生成aar文件。
3.uniapp导入上面的aar插件,然后自定义调试基座 可以实现简单的小部件。
4.实现数据交互 监听事件然后小部件用SharedPreferences保存数据。uniapp通过 @UniJSMethod调用插件中的方法获取SharedPreferences保存的数据,然后返回到uniapp中。uniapp将数据传输给小部件也是通过调用Android插件传输json进行分析的方法。
5.点击小部件打开应用程序功能,目前使用intent。
6.因为小部件和uniapp的数据是分开的,还需要数据同步,进入uniapp页面会触发同步。
问题记录:。
1。当前运行的基础不包括原始插件[xxx],请在manifest中配置插件,重新制作包括原生插件的自定义操作基座。检查aar插件的package.json中的class路径是否正确。这很容易出错。
问题:。
1.数据同步还是比较麻烦的,与原生开发相比,数据同步多了一步,节省这一步就方便了。
2.如何在uniapp中直接唤起小桌面部件,
3还没有实现.uniappios桌面的小部分怎么做?这个还需要研究。
目前做了一个demo,过程还可以,本文粗略介绍了思路,并做笔记。详细代码将在后续添加。因为没有教程,这个uniapp桌面小部件已经折腾了很久了。希望能帮助到有需要的人,欢迎交流~。
2024-06-24日志。
实现单击桌面小组件打开此应用程序的功能。这个已经走了很多弯路。首先,使用小组件跳转到目标活动类别,然后触发跳转应用程序。无论如何,它不起作用,具体原因不得而知。后来,跳转可以添加到小部件的onupdate事件中。嘿嘿。代码如下:。
/// 创建PendingIntent(,用于启动活动;如有必要,,应指向特定的Activity)Intent。launchIntent。 =context。.。getPackageManager。(。)。.。getLaunchIntentForPackage。(。context。.。getPackageName。().)。;PendingIntent。pendingIntent。 =PendingIntent。.。getActivity。(。context。,0,launchIntent。,PendingIntent。.。FLAG_IMMUTABLE。)。;views。.。setOnClickPendingIntent。(。R。.。id。.。jump_to_app_button。,pendingIntent。)。;
在uniapp中添加小部件应该也很简单。
2024-06-25日志 将桌面小部件添加到Android的原始内部弹框中。
人麻了 对于那些没有接触过Android本土开发的人 看简单的功能真的需要5个小时才能完成。
在uniapp中添加小部件功能。主要是没有那么全面的教程,只能摸着石头过河。
安卓原生内弹框只需要以下代码就可以添加桌面小部件。
if。(。Build。.。VERSION。.。SDK_INT。>=Build。.。VERSION_CODES。.。O。)。{ 。.。setStorageSync。(。'RedirectPath。',ret。)。;//同时清除记录。testMoudel。.。clear_pass。(。)。}。。。
,然后在主页上添加一个循环事件。判断RedirectPath是否有参数。c;如果有,可以根据参数跳转页面。当应用程序未启动时,跳转也可以添加到主页beforemount方法中。
2024-07-09日志 创建小部件后,设置小部件具体参数的功能 用于不同的小部件显示不同的内容
1.创建ExampleappWidgetconfigure类。
2.在AndroidManifest.Activity在xml注册。
3.小部件appwidgettet。-provider androidid在文件中配置:configure=“com.example.Scanqrmodule.ExampleAppWidgetConfigure”。
。xml version。="1.0"encoding。="utf-8"?。>。appwidget。-。provider。>
基本上所有想要实现的功能都实现了,将完整的demo上传到gitee。