当前位置: 首页 > news >正文

qq自动发货平台网站怎么做wordpress动态文章页模板下载

qq自动发货平台网站怎么做,wordpress动态文章页模板下载,大连牛人网络推广有限公司,织梦免费网站模块下载开机自启指定应用需求实现:最近有个有个客户提到这样的需求,私下自己折腾实现下 文章目录 思路参考资料实现方案源码修改文件路径源码具体修改内容 源码解读分析配置文件 Manifest.xml启动类-QuickstepLauncherBaseQuickstepLauncher熟悉的- LauncherLau…

开机自启指定应用需求实现:最近有个有个客户提到这样的需求,私下自己折腾实现下

文章目录

  • 思路
  • 参考资料
  • 实现方案
    • 源码修改文件路径
    • 源码具体修改内容
  • 源码解读分析
    • 配置文件 Manifest.xml
    • 启动类-QuickstepLauncher
    • BaseQuickstepLauncher
    • 熟悉的- Launcher
      • Launcher 配置熟悉理解
      • Launcher onCreate
  • 思考
  • 验证
  • 总结


思路

  • 基本上大家思路都是监听开机广播 RECEIVE_BOOT_COMPLETED ,然后在开机广播里面启动自己或者启动别的app。 或者 系统Launcher 是客户自己做得情况下,自己在Launcher 里面启动指定的app
  • 如果系统是用的Launcher3,那么就在Launcher 启动地方添加启动指定app 逻辑。 设置指定app 逻辑可以在任何地方实现。设定的值和launcher3 有一个数据共享即可。

方案一: 是应用来实现的,如果仅仅是监听开机广播,好处是不用借助于系统。弊端是:不同平台不同Android版本,开机广播发送并不一定及时或者收不到或者多次发送,总有一些小bug.
方案二: 需要借助于系统Launcher3来实现了

参考资料

参考资料不一定对解决当前需求、问题有用。但是如果是初学开发者,还是希望且有必要在解决问题同时,了解最基本原理,熟悉最基本的业务逻辑和应用框架。
Launcher3 相关资料参考
菜鸟成长之路-源码分析专栏
Android Launcher3 简介
Launcher3 高端定制
Launcher3 开发
Launcher3 Android Code Search在线源码查看
Launcher3 xref 在线源码查看
Launcher3 RK 源码查看
Launcher3 解析
Launcher3 AndroidP AS版本
谷歌Launcher3 Android13源码修改
Launcher3 和 Launcher3QuickStep 区别
Android14 不分Launcher3修改
Launcher3 LoaderTask 的数据加载
Android14 浅析Launcher
Android O Launcher3-Workspace加载

Framework 层Settings.System, Settings.Secure和Settings.Global存储及应用

实现方案

核心思想就是在Launcher onCreate 方法里面,读取客户设置的应用包名值,如果存在就获取包名的intent,然后跳转过去。

源码修改文件路径

/vendor/mediatek/proprietary/packages/apps/Launcher3/src/com/android/launcher3/Launcher.java

源码具体修改内容

在Launcher.java 的onCreate 方法中,添加如下内容:

 Log.e(TAG, "onCreate   modify start ");String  ziQiAppPkg = "";try {ziQiAppPkg = Settings.Secure.getString(this.getContentResolver(),"ziQiAppPkg");} catch (Exception e) {Log.d(TAG," Exception shezhi moren value kong zifuchuan ");Settings.Secure.putString(this.getContentResolver(),"ziQiAppPkg","");e.printStackTrace();}Log.e(TAG, "onCreate   ziQiAppPkg value:"+ziQiAppPkg);if(TextUtils.isEmpty(ziQiAppPkg)){Log.e(TAG, "onCreate   ziQiAppPkg no  value:");}else{Intent launchIntent = getPackageManager().getLaunchIntentForPackage(ziQiAppPkg);if (launchIntent != null) {Log.e(TAG, "onCreate   zhunbei start app value:"+ziQiAppPkg);startActivity(launchIntent);} else {Log.d(TAG," app pkg:"+ziQiAppPkg+" zanwei anzhuang");}  }Log.e(TAG, "onCreate   modify end ");

截图如下:
在这里插入图片描述

源码解读分析

配置文件 Manifest.xml

在首页先获取当前到底是什么界面Activity ,然后去配置文件看看相关信息

DisPlay:/ $ dumpsys activity top | grep ACTIVITYACTIVITY com.android.settings/.SubSettings 8877f54 pid=1447ACTIVITY com.android.launcher3/.uioverrides.QuickstepLauncher 25cc517 pid=1526

那么就去Manifest 配置文件中看看配置信息:这个Activity 配置了 HOME 属性,那应该就是这个Activity了

  <!--Main launcher activity. When extending only change the name, and keep all theattributes and intent filters the same--><activityandroid:name="com.android.launcher3.uioverrides.QuickstepLauncher"android:launchMode="singleTask"android:clearTaskOnLaunch="true"android:stateNotNeeded="true"android:windowSoftInputMode="adjustPan"android:screenOrientation="unspecified"android:configChanges="keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenSize|screenLayout|smallestScreenSize|density"android:resizeableActivity="true"android:resumeWhilePausing="true"android:taskAffinity=""android:exported="true"android:enabled="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.HOME" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.MONKEY"/><category android:name="android.intent.category.LAUNCHER_APP" /></intent-filter><meta-dataandroid:name="com.android.launcher3.grid.control"android:value="${packageName}.grid_control" /></activity>

启动类-QuickstepLauncher

查看类声明:

类声明 public class QuickstepLauncher extends BaseQuickstepLauncher {

在这里插入图片描述

从类上面看,并没有onCreate 方法,一些基本的View / service 相关方法
那就看父类 操作 BaseQuickstepLauncher

BaseQuickstepLauncher

看一下类声明:

看类说明如下:扩展 Launcher ,提供特别的具体的功能。 这里简单看下,暂不扩展讨论

/*** Extension of Launcher activity to provide quickstep specific functionality*/
public abstract class BaseQuickstepLauncher extends Launcherimplements NavigationModeChangeListener {

在这里插入图片描述

熟悉的- Launcher

这里就是我们熟悉的Launcher了,好多需求和源码分析都是从这里分析的。

Launcher 配置熟悉理解

看Manifest.xml 配置的Home 属性
在这里插入图片描述

备注:为什么好多源码分析都是从这里分析的,一方面这里确实是入口、且它也有自己的Menifest 配置的Home 属性。但是部分Launcher的配置,这个类并没有配置Activity,而是作为一个父类来展开的。比如我们通过以下名称查看Launcher 顶层Activity:


DisPlay:/ $ dumpsys activity top | grep ACTIVITYACTIVITY com.android.settings/.SubSettings 8877f54 pid=1447ACTIVITY com.android.launcher3/.uioverrides.QuickstepLauncher 25cc517 pid=1526

但是我们看到Manifest.xml 里面Launcher也有配置,为啥我们adb 启动Launcher 时候,无法启动 找不到。如下:

E:\work\yuanma\android12\Launcher3>adb shell am start -n com.android.launcher3/.Launcher
Starting: Intent { cmp=com.android.launcher3/.Launcher }
Error type 3
Error: Activity class {com.android.launcher3/com.android.launcher3.Launcher} does not exist.E:\work\yuanma\android12\Launcher3>adb shell am start -n com.android.launcher3/com.android.launcher3.Launcher
Starting: Intent { cmp=com.android.launcher3/.Launcher }
Error type 3
Error: Activity class {com.android.launcher3/com.android.launcher3.Launcher} does not exist.E:\work\yuanma\android12\Launcher3>adb shell am start -n com.android.launcher3/com.android.launcher3.Launcher
Starting: Intent { cmp=com.android.launcher3/.Launcher }
Error type 3
Error: Activity class {com.android.launcher3/com.android.launcher3.Launcher} does not exist.

那是因为我们源码编译的Manifest 不是这个包含Launcher Activity 的 Manifest.xml 啊

Launcher onCreate

Launcher3 开发基本上都会从这个入口来熟悉 了解,这里以前了解过,可以看看相关资料参考。 我们直接在onCreate 方法实现即可。

思考

如何实现设置的值在Launcher 启动的时候读取到,读取到指定的应用值才能够自启动指定的app?
这里我给出自己的想法

  • 通过数据库,ContentProvider 调用。Launcher 里面读取另外app 设置的值,存储在另外app 的数据库中
  • 通过本地文件,比如:本地文件写值, Launcher 读取文件里面值
  • 通过属性:系统写一个属性值,属性值对应的value 值。设置app自启的应用负责写入值、修改值。Launcher 里面负责读取值,然后自启指定app
  • 通过系统数据库来实现,和属性比较相似。Framework 层Settings.System, Settings.Secure和Settings.Global存储来实现 参考:Framework 层Settings.System, Settings.Secure和Settings.Global存储及应用

验证

上面在实现方案中已经说明如何实现,实际测试验证可以直接写代码验证,在 Framework 层Settings.System, Settings.Secure和Settings.Global存储及应用 资料中有现成的Demo, 也可以用adb 命令来验证下。 实际效果ok, 有人会问 Launcher 死掉岂不是 直接进入了指定自启的App ? 对于系统Launcher3 而言,这个问题不用考虑了。
在这里插入图片描述

总结

  • 这里从系统角度 给出了应用自启的一个解决方案,建议不要用开机广播实现
  • 涉及到的知识点需要了解基本的Launcher3 源码 和 Settings.System, Settings.Secure和Settings.Global存储的应用
http://www.dtcms.com/a/412347.html

相关文章:

  • 龙芯在启动参数里添加串口信息
  • 网站域名spacewordpress 打开很慢
  • 收到短信说备案被退回但工信部网站上正常啊wordpress自动缩略图
  • 目前做网站最流行的程序语言网站出问题
  • 上海网站营销seo怎么查看网站是哪个公司建的
  • Stata语法详解:从入门到精通
  • 专门做当归的网站网站文章不收录怎么做
  • 正规网站建设服务中心开发企业app公司
  • 新手搭建做网站简洁型网页
  • 深度学习------专题《图像处理项目》
  • 阿里云iis放网站织梦系统怎么做单页网站
  • 企业网站推广 知乎wordpress媒体库在哪
  • 关于红黑树删除节点操作的完整推导
  • 深圳做网站报价 网站
  • git reset --soft <commit>和 git revert <commit>的区别
  • Unity-角色控制器
  • 比价网站源码网站关键词优化方法
  • 模板网站的域名是什么意思网络服务器租赁
  • Linux第二十一讲:网络层
  • 【FreeRTOS】第七课(3):任务间的通信——使用队列集优化程序架构
  • SQL语句详细使用说明 - 适合小白入门
  • 天水网站建设惠普网站暂时关闭 seo
  • 做网站如何对接支付gpu服务器租用价格
  • 检查一个字符串是否包含所有长度为K的二进制子串
  • 做网站需要多少空间芜湖网站建设兼职
  • 森动网网站建设好吗自己开发app要钱吗
  • 携程网站建设在阿里巴巴上做网站需要什么条件
  • 北京建设部网站职称网站建设硬件投入表
  • 视频防录屏软件为什么受欢迎?---以点盾云为例
  • 开源AI工具Mobile-Use