Android笔记--动态设置Launcher

Posted ljt2724960661

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android笔记--动态设置Launcher相关的知识,希望对你有一定的参考价值。

          动态设置桌面Launcher,代码如下:

	//获取默认Launcher
    private fun getDefaultLauncher(context:Context) :String?
        val intentList = java.util.ArrayList<IntentFilter>()
        val cnList = java.util.ArrayList<ComponentName>()
        context.packageManager.getPreferredActivities(intentList, cnList, null)
        for (i in cnList.indices) 
            val iLCurrent = intentList[i]
            if (iLCurrent.hasAction(Intent.ACTION_MAIN) && iLCurrent.hasCategory(Intent.CATEGORY_HOME)) 
                //默认launcher
                try 
                    return cnList[i].packageName
                 catch (ex: Exception) 
                
            
        
        return null
    
	
	//清除默认launcher
	 private fun clearDefaultLauncher(context:Context) 
        val intentList = java.util.ArrayList<IntentFilter>()
        val cnList = java.util.ArrayList<ComponentName>()
        context.packageManager.getPreferredActivities(intentList, cnList, null)
        for (i in cnList.indices) 
            val iLCurrent = intentList[i]
            if (iLCurrent.hasAction(Intent.ACTION_MAIN) && iLCurrent.hasCategory(Intent.CATEGORY_HOME)) 
                //遍历过滤所有launcher
                try 
                    val name = cnList[i].packageName
                    //清除原有的默认launcher
                    context.packageManager.clearPackagePreferredActivities(name)
                 catch (ex: Exception) 
                
            
        
    
	
	
	//设置Launcher
	private fun setLauncher(pkg:String) 
        val set = arrayOfNulls<ComponentName>(mHomeList.size)
        var curLauncher:String
        var curLauncherActivity:String
        var launcher:ComponentName? = null
        val filter = IntentFilter()
        filter.addAction(Intent.ACTION_MAIN)
        filter.addCategory(Intent.CATEGORY_HOME)
        filter.addCategory(Intent.CATEGORY_DEFAULT)
        for(i in 0 until mHomeList.size) 
            val r: ResolveInfo = mHomeList.get(i)
            set[i] = ComponentName(r.activityInfo.packageName, r.activityInfo.name)
            if(r.activityInfo.packageName.equals(pkg.trim())) 
                curLauncher = r.activityInfo.packageName
                curLauncherActivity = r.activityInfo.name
                launcher = ComponentName(curLauncher, curLauncherActivity)
            
        
        launcher?.let 
            this.packageManager.addPreferredActivity(filter, 1081344, set, launcher)
        
    

以上是关于Android笔记--动态设置Launcher的主要内容,如果未能解决你的问题,请参考以下文章