Nano Hash - криптовалюты, майнинг, программирование

Скрытое приложение Android

Я пишу (легальную) шпионскую программу. Я хочу сделать эту программу скрытой в лаунчере (чтобы значок не показывался). Я попытался удалить строку <category android:name="android.intent.category.LAUNCHER" /> из строки AndroidManifest.xml, но тогда пользователь не может запустить приложение в режиме первого запуска (конфигурации). У кого какие идеи?

Как мне это сделать?

07.01.2013

Ответы:


1

Вам нужно превратить ваше приложение в сервис. Вот как андроиды берутся за создание сервисных компонентов:

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);
  }

 }
07.01.2013
  • Студия Android не будет компилироваться, если в androidmanifest нет категории LAUNCHER 26.09.2015
  • Как будет выполняться сервисный код, если вы не сможете запустить приложение, студия Android не сможет скомпилировать только первый раз 03.10.2016
  • Не получать никаких вызовов в BroadcastReceiver, пока я не начну активность один раз 17.01.2017

  • 2

    Вы можете удалить <category android:name="android.intent.category.LAUNCHER"/> из файла AndroidManifest.xml.

    Но не забудьте добавить <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>, чтобы студия Android могла скомпилировать ваше приложение (но скрытое от лаунчера) :) :D

    31.07.2017

    3

    Удалить

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

    из файла манифеста

    07.01.2013
  • @AmitApollo, нет необходимости создавать сервис. 08.01.2013
  • Как будет запущено приложение? 08.01.2013
  • @Squonk Я не эксперт, но, может быть, это широковещательный приемник? 02.02.2015
  • @RicardoCristianRamirez: вы не можете запустить какой-либо компонент приложения Android, если пользователь не запустил приложение. Это включает в себя Services и BroadcastReceivers — так было во многих версиях Android из соображений безопасности. 02.02.2015
  • Это не сработает, студия Android не будет компилироваться только. Будет сказано, что активность по умолчанию не найдена. 03.10.2016

  • 4

    Приложение можно скрыть программно. Ниже приведен код, который скроет приложение из меню Launcher. это отлично работает и на андроид 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")
    }
    

    Для получения дополнительной информации вы можете проверить эту ссылку https://developer.android.com/reference/android/content/pm/PackageManager#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)

    03.10.2020
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..