Android APP安装后不在桌面显示图标的应用场景举例和实现方法

最近在为公司做一款车联网的产品,由于公司本身擅长于汽车解码器的研发,所以该产品的诊断功能的实现除了使用目前市面上车联网产品中大量使用的OBD协议外,还会使用一些专车专用协议去实现一些特殊的诊断功能,如升窗降窗、保养归零、读TPMS数据流等。公司的想法是把这些专车专用的诊断当成一种付费服务提供给用户,即用户在免费使用基于OBD协议实现的诊断功能外,若想使用专车专用协议实现的某个特殊功能则需要按每个功能多少钱的形式付费(本人不太赞成靠这种方式赚钱,觉得还是免费的好)。

我主要负责这款车联网产品中Android APP的开发,对于实现前面所提及的这个产品需求,我们准备把每款车的特殊功能诊断程序做成一个个的子程序,即一个个的子APK,之所以选择这样的一种方式,原因在于:①当前市面上车型很多,每个车型对应的同一个特殊功能的诊断程序因汽车协议不同而不一样,若全部程序都放在一个APP中,势必会造成APP过大,后期也不好维护;②提供这些特殊功能的初衷是为了迎合专业的汽车维修人员和车辆改装发烧友(以下称为“专业用户”)的需求,很可能大部分普通用户都不会去使用,这样能更方便需要的用户下载。

为了在用户安装了子APK之后不至于让用户的桌面全是各种图标(本人很讨厌手机桌面太乱),体验太差且让程序的入口还能集中在主APK,只能想办法使用一些小技巧在桌面不显示这些图标。具体实现方式如下:

1、开发一个名为OpenNoIconAPP.apk的主APP,里面就一个按钮用于点击后打开子APP,核心跳转代码如下:

public void onClick(View view) {
    switch (view.getId()) {
    case R.id.btn_open_app:
         /*
         * Intent intent = getPackageManager().getLaunchIntentForPackage(
         * "com.example.noicontest"); if (intent != null) { //
         * startActivity(intent); } else {
         * Toast.makeText(getApplicationContext(), "没有该子APP,请下载安装",
         * Toast.LENGTH_LONG).show(); }
         */

        Intent intent = new Intent();
        ComponentName cn = new ComponentName("com.example.noiconapp","com.example.noiconapp.MainActivity");
        intent.setComponent(cn);
        intent.setAction("android.intent.action.MAIN");
        try {
            startActivityForResult(intent, RESULT_OK);
        } catch (Exception e) {
            Toast.makeText(this, "没有该子APP,请下载安装",Toast.LENGTH_SHORT).show();
        }
        break;

    default:
        break;
    }
}

2、开发名为NoIconAPP.apk的子APP(用于主APP去打开),该APP主要实现在桌面不显示图标。其中要想不显示桌面图标只需修改AndroidManifest.xml文件即可。具体如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.noiconapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="14" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.noiconapp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <!-- 要想在桌面不显示图标,只需注释掉APP入口Activity中的下面这句即可,或者把下面的LAUNCHER改成DEFAULT也行 -->
            <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
        </intent-filter>
    </activity>
</application>
</manifest>

3、上面的设置可以让桌面图标不显示的原因:

一般情况下,当我们的APK在被安装后,系统会自动创建我们的APK程序,系统Launcher(系统桌面应用程序)会自动检测系统已经安装的应用软件的包名,然后把这些APP的图标和名称解析出来后显示在应用程序列表里,一旦我们像上面那样设置不显示APK图标,则APK程序在运行后只会显示在“正在运行”的程序列表中,而不会在桌面上显示图标和名字。如果只是设置APP图标不可见而使用第一种方式(我注释的代码)打开APP是不会成功的,因为这样设置后,包名根本就没有加载到Launcher,所以通过 getPackageManager().getLaunchIntentForPackage()方法得到的Intent为null。

4、其它举例:

前几天更新了联通“手机应用厅”的最新版Android APP,发现新增加的“网络测速”功能其实是一个子APP,使用的正是这种方式。

5、示例程序:

点击下载

时间: 2024-12-28 01:33:09

Android APP安装后不在桌面显示图标的应用场景举例和实现方法的相关文章

转Android APP安装后不在桌面显示图标的应用场景举例和实现方法

转http://www.cnblogs.com/allenzheng/p/4510725.html#3186608 Android APP安装后不在桌面显示图标的应用场景举例和实现方法 最近在为公司做一款车联网的产品,由于公司本身擅长于汽车解码器的研发,所以该产品的诊断功能的实现除了使用目前市面上车联网产品中大量使用的OBD协议外,还会使用一些专车专用协议去实现一些特殊的诊断功能,如升窗降窗.保养归零.读TPMS数据流等.公司的想法是把这些专车专用的诊断当成一种付费服务提供给用户,即用户在免费使

Android Studio安装后Fetching android sdk component information超时的解决方案

问题描述: Android Studio 是一个全新的 Android 开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试. Android Studio安装完成后,如果直接启动,Android Studio会去获取 android sdk 组件信息,这个过程相当慢,还经常加载失败,导致Android Studio启动不起开.解决办法就是不去获取android sdk 组件信息. 解决方法:

Android Studio安装后第一次进不去

Android Studio 安装后第一次进不去,因为检查到有更新的SDK,在下载.但是呢,没有FQ的情况下,无法下载下来,所以就卡住了. 那么解决方案就是让 Android Studio 第一次启动时跳过第一次设置选项. 找到 Android Studio 安装目录下bin目录中找到idea.properties文件(具体路径大家的不一样,我的是:D:/Android/Android Studio/bin) 用记事本打开idea.properties,在最后一行添加一句:disable.and

Android SDK安装后错误或不完整的解决方法

1.Android SDK安装后没有可更新包的列表? 找到SDK的安装目录,D:\Android\android-sdk 运行DK Manager.exe打开后在菜单Tools->Options 然后在Others框中,把那几个色打上(使用http而不是安全链接https,否则谷歌网站会拒绝) 2.Android SDK安装后,更新时经常断网出错? 打开文件夹C:\Windows\System32\drivers\etc 找到hosts文件,用记事本打开,在末尾加以下内容: 127.0.0.1

Android程序安装后应用图标不显示的问题

原文地址:http://trinea.iteye.com/blog/1463296 本文主要介绍Android应用程序安装后图标不显示的几个可能原因. 自己写的程序突然安装后图标不见了,在应用程序安装中能找到,但是桌面上就是没有图标,启动只能从最近列表中其中..一般这种情况只会在服务类程序和测试程序中出现,因为不需要图标. google无果,自己二分调试解决了,并测试了其他网友提供的其他会出错原因,大致总结如下: 1.AndroidManifest中application元素属性设置问题 属性设

Centos6.4最小化安装后使用xfce桌面环境

由于我个人使用的Centos是在虚拟机中最小化安装的,gnome实在是不喜欢,所以自己装了个xfce,安装后启动不起来,才发现x window等依赖环境没装,为了少走弯路,在此写下安装过程. 1.yum源配置过程 $ wget http://download.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm $ sudo rpm -ivh epel-release-6-5.noarch.rpm $ sudo yum s

android studio安装后闪退

最近想把以前项目的android代码工程从Eclipse 转移到android studio中,下载谷歌最近的android studio安装包2.3版本安装后,打开android studio,程序闪退,在网上也找了好多答案,可是一一试过后,都不能用,最近FQ到google,搜索,找到问题原因,原因是JDK版本太低,我本机原来的JDK版本是1.7,随后下载安装JDK1.8,安装后,可以正常打开android studio. 转载此文,请注明来源,谢谢

android studio安装后卡在fetching Android sdk compoment information

解决办法: 找到android studio 安装目录下bin目录中(D:\Android\Android Studio\bin)的idea.properties文件,在文件末尾处添加disable.android.first.run=true 然后再打开android studio就不会再去fetch了 ,再手动设置android sdk目录.下次打开android studio就不会再出现了

eclipse android adt安装后没有菜单栏没有相应的插件?

搭建android开发平台时,安装好eclipse后,安装adt插件,提示安装成功,重启软件后再windows->preference里面有android选项,新建project里面也有这个关于android的选项,但我可以确保java开发包和android sdk都安装成功了啊,为什么啊,都换了好几个eclipse了.         答:如果安装过程没错,直接在Eclipse ->window->customize Perpective(定制视图)->Command Group