Android隐藏应用程序

时间:2013-01-07 21:55:34

标签: android hidden launcher

我正在写一个(合法的)间谍程序。我想让这个程序隐藏在启动器上(这样就不会显示图标)。我尝试从<category android:name="android.intent.category.LAUNCHER" />中删除AndroidManifest.xml行,但用户无法在首次启动模式(配置)中启动应用程序。谁有任何想法?

我该怎么做?

4 个答案:

答案 0 :(得分:31)

您需要将自己的应用变为服务。以下是Androids创建服务组件:

http://developer.android.com/guide/components/services.html

在MobiWare上也找到了这个:

如果您想在没有用户知识的情况下跟踪移动设备的使用情况或收集一些数据,这可能会对您有所帮助。

步骤1:创建一个没有图标的应用程序。  通常,活动在清单中声明如下。

     <activity
        android:label="@string/app_name"
        android:name="org.security.tracker.Tracker-activity" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

删除分类标签,您将不再获得应用程序图标。 现在,你不再需要活动了。所以删除这一部分。 你可能会想,应用程序如何在没有任何触发器的情况下运行,或者应用程序的起点是什么。 这是解决方案。

<!-- Start the Service if applicable on boot -->
    <receiver android:name="org.security.tracker.ServiceStarter" >
        <intent-filter >
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

这会触发您在Receiver中编写的代码,您可以运行服务来实现您的想法。

 <service android:name="org.security.tracker.serviceCode" />

您需要添加此权限

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

您的代码仅在手机重新启动时运行。

步骤2.编写代码

在重新启动时,接收器将会启动,您可以在那里开始服务。

class ServiceStarter extends BroadcastReceiver {

@Override
public void onReceive(Context _context, Intent _intent) {

    Intent i = new Intent("com.prac.test.MyPersistingService");
    i.setClass(_context, ServiceCode.class);
    _context.startService(i);
  }

 }

答案 1 :(得分:3)

除去

<intent-filter >
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>

来自清单文件

答案 2 :(得分:2)

您可以从AndroidManifest.xml文件中删除<category android:name="android.intent.category.LAUNCHER"/>

但请记住添加<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>以便Android工作室能够编译您的应用程序(但已从启动器中隐藏):):D

答案 3 :(得分:-1)

可以通过编程方式隐藏该应用程序,下面的代码将从“启动器”菜单中隐藏该应用程序。这也可以在android 10上正常运行

// App will be hidden when this method will be called from menu
private fun hideApp() {

    val packageManager =packageManager
    val name =ComponentName(this,MainActivity::class.java)
    packageManager.setComponentEnabledSetting(name,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP)
    Log.d("TAG", "hideApp: success")
}

有关更多信息,您可以检查此链接enter image description here

相关问题