繁体   English   中英

如何从Android桌面隐藏应用程序图标?

[英]How to hide application icon from the Android Desktop?

我定义了一个仅在我的其他应用程序中使用的应用程序。 所以我想隐藏这个应用程序的图标,这样用户就无法在手机的桌面上看到它(或者你如何调用列出所有应用程序的东西?)。 我的清单文件看起来如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="xyz.games.pacman.controller"
      android:versionCode="1"
      android:versionName="1.0">

      <uses-permission android:name="android.permission.BLUETOOTH"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".PacmanGame"
                  android:label="@string/app_name"
                  android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="pacman.intent.action.Launch" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

         <receiver android:name="xyz.games.pacman.network.MessageListener">
         <intent-filter>
            <action android:name="xyz.games.pacman.controller.BROADCAST" />
            </intent-filter>
         </receiver>

    </application>
    <uses-sdk android:minSdkVersion="7" />
</manifest> 

我已经读过这个问题:

如何在Android模拟器中隐藏应用程序图标?

但如果我只是删除该行

<category android:name="android.intent.category.DEFAULT" />

在我的清单中,活动根本不起作用(调用活动中的ActivityNotFoundException)。

任何提示如何解决这个问题? 我已经尝试过android.intent.category.EMBEDDED,但这也行不通。

在互联网上,我发现CommonsWare可以使用PackageManager来回答http://osdir.com/ml/Android-Developers/2010-06/msg03617.html 不幸的是,没有解释如何通过浏览PackageManager API来找到解决方案。

你为什么要编写一个实际的(可执行的)第二个应用程序,当它从另一个应用程序接收某个应用程序时它只是存在?

我建议你将这个“app”实现为服务(远程或本地)。 然后,这项服务将在后台运行并为您完成任务,并且屏幕上不会显示任何图标...

如果需要,您可以将此服务实现为远程服务,这意味着它在与第一个应用程序完全不同的过程中运行。 并且:您实际上可以通过广播意图进行通信,就像您现在所做的那样,因此您无需更改第一个应用程序...

您需要创建自定义意图过滤器,然后创建使用该过滤器的意图。

例如,在我的Funky Expenses应用程序中,外部应用程序可以添加事务。 这是通过包含Funky Expenses的清单来实现的

    <activity android:name="com.funkyandroid.banking.android.ExternalEntryActivity">
        <intent-filter>
            <action android:name="com.funkyandroid.action.NEW_TRANSACTION" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

然后外部应用程序可以通过以下方式访问我的活动;

Intent launchIntent = new Intent();
launchIntent.setAction("com.funkyandroid.action.NEW_TRANSACTION");
... code to set parameters to be passed to activity ...
startActivity(launchIntent);

请特别注意设置正确意图的setAction调用。

尝试删除intent-filter,而不是尝试直接使用过滤器lounch启动第二个活动:

Intent second = new Intent(context, xyz.games.pacman.controller.PacmanGame.class);
startActivity(second);

您必须删除整个<intent-filter> ,而不仅仅是<category>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM