Launcher

默认Launcher 本文介绍了Android系统中Launcher的默认启动与崩溃处理机制。当系统启动时,ActivityManagerService会获取并启动Launcher应用,若未设定默认Launcher则会弹出选择框(图1)。当Launcher崩溃时,系统会清除其默认设置,并在重启后重新弹出选择框。从Android Q开始,改用RoleManager来管理默认应用。文章还提出了在Launcher崩溃时自动切换默认Launcher的方案,通过在AMS中修改代码实现,但存在需要系统权限和需处理崩溃弹窗等问题。最后提及了设 阅读详情

 

参考博客:

https://www.cnblogs.com/rayray/p/3408107.html 

参考android的源码的地址:

http://androidxref.com/source/xref/packages/apps/Launcher2/src/com/android/launcher2/DragLayer.java

 

package bjpkten.mylauncher;

import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private List<ResolveInfo> mApps;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);

        initData();
        mRecyclerView.setAdapter(new MyRecyclerViewAdapter());
        mRecyclerView.setLayoutManager(new GridLayoutManager(this,3));


    }

    public void initData(){
        Intent intent = new Intent(Intent.ACTION_VIEW,null);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        mApps = getPackageManager().queryIntentActivities(intent, 0);
    }


    class MyViewHolder extends RecyclerView.ViewHolder{
        ImageView imageView;
        public MyViewHolder(View itemView) {
            super(itemView);
            imageView = (ImageView) itemView.findViewById(R.id.imageView);
        }
    }

    class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyViewHolder>{

        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_icon, null);
            return new MyViewHolder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
                myViewHolder.imageView.setImageDrawable(mApps.get(i).loadIcon(getPackageManager()));
        }

        @Override
        public int getItemCount() {
            return mApps.size();
        }
    }
}

 

 

item_icon.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="100dp"
        android:layout_height="100dp" />

</android.support.constraint.ConstraintLayout>

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

</android.support.constraint.ConstraintLayout>

 

Android AOSP 9.0 Launcher开发(一)Launcher基础知识 Android AOSP 9.0 Launcher开发(一)Launcher基础知识1.什么是Launcher新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML ... 阅读详情

相关推荐

Android内置多个launcher设置默认launcher

Android设置默认launcher前言高通 codeMTK code结语 前言 launcher因为开机即启动,若添加默认launcher过早则可能导致其他进程崩溃,添加过晚则起不到启动默认设置的效果且会弹出选择launcher的提示框. 查看了一些其他的修改方法,均需在ActivityManagerService.java的startHomeActivityLocked添加默认启动,但是发现...

jkcomkl的博客 5586

Android编程权威指南第三版 第24章

挑战练习:应用图标 前面,为在启动器应用中显示各个activity的名称,你使用了ResolveInfo.loadLabel(...) 方法。loadIcon()是ResolveInfo类的另一个方法,可以用它为每个应用加载显示图标。作为 练习,请给NerdLauncher应用中显示的所有应用添加图标。 解决办法: 一、创建recyclerView中item的布局文件(item_r...

苹果果的博客 792

Android Launcher研究(二)-----------Launcher为何物,究竟是干什么的?

在上一节,我讲了如何下载Launcher的教程,今天这一节,我将重点讲一下什么Launcher,究竟它是什么神秘东东?Launcher俗称HomeScreen,也就是我们启动Android手机,第一眼看到的应用程序,而这个应用程序是比较特殊而且任务艰巨的。它负责了我们除了应用本身操作以外的所有操作,它负责了我们有几个桌面,点击应用图标启动应用程序,长时间按桌面出现上下文菜单,长时间按桌

Android_Tutor的专栏 9万+

Android,利用PackageManger获取app信息:名称、图标、包名、入口

Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); mThirdApps = mPackageManager.queryIntentActivities(intent, 0); Log.d(TAG, "queryThirdApps: " + mThirdApps.size()); D/AllAppsAdapter: queryTh.

不止于代码 3865

Launcher启动流程

Launcher即桌面,是Android智能设备的窗口,用户使用最频繁的软件之一。Launhcer是Android所有应用的入口,也提供窗口小部件等功能 当然,Launcher本身就是一个APP,一个提供桌面的APP,我们也可以开发一款Launcher APP作为手机的桌面。Laucher有很多和普通APP不同的地方。 Launcher是顶部APP,即任何应用返回后都是到Launcher,不能再继续返回; Launcher是所有应用的入口,可以管理应用; Launcher是Android系统启动后就要显示

Florizt 3352

Android 内置多个launcher 设置默认launcher

前言 launcher因为开机即启动,若添加默认launcher过早则可能导致其他进程崩溃,添加过晚则起不到启动默认 设置的效果且会弹出选择launcher的提示框. 查看了一些其他的修改方法,均需在 ActivityManagerService.java 的 startHomeActivityLocked 添加默认启 动,但是发现添加后,若系统存在多个 launcher apk,则仍然会弹出la...

cczhengv 6210

红米手机上ResolveInfo loadIcon的背景问题

Android开发:在红米机器上使用ResolveInfo获取包应用信息,并且使用loadIcon载入应用配置的Activity icon图片获取Drawable对象,获取的Drawable有时候会比原图多一个灰色背景。(部分图片有)   然而在其他机器上获取都是正常的,包括获取selector形式的Drawable。最后在用另外一种方式载入icon解决    mContext.getReso

sujudz的专栏 1600

强化学习之课程学习法

课程学习是一种有计划的学习方法,模拟人类学习的过程。它通过设置逐步增加难度的任务序列,让学习系统从简单的任务开始,逐渐过渡到复杂任务。这一方法可以显著提高训练效率,避免智能体一开始就面临过于复杂的任务,从而导致学习过程困难。逐步难度增加:从简单的任务开始,逐步增加任务的难度,直到智能体能够解决最复杂的任务。动态调整:根据智能体的学习进展,动态调整任务的难度,保证学习的过程始终处于一个适当的挑战性范围。

m0_64087341的博客 2694

【Android】获取手机中已安装apk文件信息

【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等) 众所周知,通过PackageManager可以获取手机端已安装的apk文件的信息,具体代码如下 PackageManager packageManager = this.getPackageManager();List packageInfoList =

hao201011的专栏 1428

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

超实用!用ChimeraX对AlphaFold 结果可视化(中): 蛋白结构美化篇

而一般需要的背景颜色是无色(白色),有三种方法可以更改背景颜色,这里我们介绍两种方法,第三种在下一小节中讲解。如果想选中蛋白链中的某一结构区域或者某些位点,可以用Ctrl+Shift+鼠标左键,或在软件窗口中点击。在这个窗口中可以对蛋白的主链、侧链、表面等颜色进行修改,只用在。,即可在右下角看到我们蛋白的序列信息,在这里面直接用鼠标选择要选择的结构域。就会有更多的颜色供我们选择,如果有特定的色号还可以在这个界面继续选择。后面的颜色(②),就可以选择想要的任何背景颜色(③)。就可以选择软件推荐的常用颜色。

m0_63153079的博客 5481

关于Launcher加载应用图标,导致图标显示异常的问题

关于Launcher加载应用图标,导致图标显示异常的问题

LX_52Hz的博客 1310

MMSE (Minimum Mean Square Error)均衡原理讲解

MMSE是一种将接收数据的MSE(均方误差)最小化的模型。有了这句话,很多问题就会在你的脑海中蹦出来。 什么是均方误差?最小化MSE "的物理含义是什么? 等等。 让我们从一个我们现在已经非常熟悉的通道模型开始。(我希望你现在也熟悉下面的表达方式。) MMSE作为一种均衡器,是一种后处理算法,它可以帮助我们找出接收到的数据,使之尽可能地接近原始数据(传输数据)。简而言之,MMSE中最重要的步骤是找到一个如下图所示的矩阵G。如果我们假设没有噪声,这个[G]矩阵可以简单的作为信道矩阵(H^-1)的倒数。但

Celeste的博客 4万+

Android 定制自己的launcher

launcher(安卓系统桌面启动器) launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher出错的时候,安卓系统会出现“进程 com.android.launcher 意外停止”的提示窗口。这时需要重新启动Launcher。

android程序猿HJ的博客 2万+

3dMax效率翻倍!用Octopus章鱼插件打造你的专属快捷菜单(附MaxScript入门指南)

本文详细介绍了如何利用Octopus插件和MaxScript脚本在3dMax中打造高效快捷菜单,显著提升三维建模与动画制作的工作效率。通过饼状菜单系统、自动化宏录制和脚本控制,用户可实现个性化工作流,节省大量操作时间。文章还提供了MaxScript入门指南,帮助开发者快速掌握这一强大工具。

weixin_30920853的博客 151

ggml_cgraph 详解

是 GGML 库的(Computation Graph)结构,它是深度学习框架的核心,用于表示、优化和执行神经网络的计算过程。

zhouzwd87的专栏 1203

Android 源码多个Launcher设置默认Launcher

在Android系统中,设置默认Launcher(启动器)是一个涉及系统权限和配置的过程。通常,这个过程不是通过简单地修改几个文件或设置就能完成的,因为它需要系统级别的权限。不过,我可以概述一下在Android源码级别如何设置或允许用户选择默认Launcher的大致步骤。代码路径:frameworks/base/core/java/com/android/internal/app/ResolverActivity.java2.多个launcher 启动设置默认launcher的核心功能实现和分析通过在系统中

shi450561200的博客 4505

Ethercat学习-从站源码生成

移植平台GD32F450,从站芯片AX58100

西澳峰的博客 9217

Android Launcher 入门

Launcher(发射器),就是你经常看到主屏幕吧,其实它也是一个App,它加载着其它app的图标和名字,并通过意图打开i它们。 从本博客你可以从认识Launcher并且开发一个简单的Launcher,在你的模拟器上使用。 注意: 下面代码需要自己强烈建议手打,否则你只是复制了一个Demo。 如果你需要的只是看一下效果的话,请点击下载,转到GitHub上下载Demo,并查看。 GitH...

光临天下 1万+

OpenCV入门(一)Python环境的搭建

因为有点Python基础,并且Python是比较好入门的编程语言,所以,机器视觉后面打算在Python这个平台下进行。

小幽余生不加糖 8121

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android10 设置默认Launcher

Android 设置默认launcher

androidzmm的博客 7080

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android学习21 -- launcher

之前在工作中,第一次听到launcher有点蒙圈,不知道是啥,当时还赶鸭子上架去和客户PK launcher的事。后来才知道其实就是安卓的桌面。本来还以为很复杂,毕竟之前接触过windows的桌面,那叫一个复杂。。。后面查了一下,Android的桌面倒是没那么复杂,本质其实就是一个App,系统启动之后跑起来的第一个app。

fanged的专栏 2624

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

关于android使用自己的launcher替换默认launcher的方法

关于android使用自己的launcher替换默认launcher的方法 有时候,你可能希望用你自己的launcher程序替换默认的android launcher2和launcher3。而且希望作为系统起来就启动你的launcher程序,而不需要用户选择。 特别是如果你的launcher程序和默认launcher程序共存时,即使你的launcher已经被用户选择为默认启动launcher,突然...

weixin_33963189的博客 3916

Android13设置默认Launcher分析

主要介绍如何设置默认Launcher,同时分析下Settings应用中是如何调用的,以及Framework中的响应过程。

rophy___的博客 2556

Android中的Launcher介绍

launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher出错的时候,安卓系统会出现“进程 com.android.launcher 意外停止”的提示窗口。这时需要重新启动Launcher。 对于大部分Android开发来说不用改变Andro...

Sam_Zhao的个人博客 7564

AOSP Android14 Launcher3——Launcher的状态介绍LauncherState类

***//*** app*/NORMAL(普通状态 / 主屏幕)描述: 这是 Launcher 的默认状态,显示用户的主屏幕 Workspace 和 Hotseat。触发: 应用启动时、从其他状态(如 All Apps、Overview)通过 Home 键或 Back 键返回时。NORMAL状态就是默认的桌面状态(弹簧加载状态)描述: 当用户长按 Workspace 上的图标或小部件并开始拖动时进入的状态。

Micheal_Yang's Blog 1615
上一篇: [精]android图片加载机制和缓存机制 【待丰富中】
下一篇: mac numbers 分列,文字按照特殊字符分列显示的方法
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值