24

私は(合法的な)スパイプログラムを書いています。このプログラムをランチャーに非表示にしたい(アイコンが表示されないようにする)。<category android:name="android.intent.category.LAUNCHER" />から行を削除しようとしましAndroidManifest.xmlたが、ユーザーは最初の起動モード(構成)でアプリケーションを起動できません。誰がアイデアを持っていますか?

どうすればいいですか?

4

4 に答える 4

35

アプリをサービスにする必要があります。Androidがサービスコンポーネントの作成に取り組んでいるのは次のとおりです。

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

 }
于 2013-01-07T22:05:35.747 に答える
5

<category android:name="android.intent.category.LAUNCHER"/>AndroidManifest.xmlファイルからを削除できます。

<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>ただし、Android Studioがアプリをコンパイルできるように追加することを忘れないでください(ランチャーからは非表示になっています):):D

于 2017-07-31T10:05:48.727 に答える
3

削除する

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

マニフェストファイルから

于 2013-01-07T22:09:55.237 に答える
-2

アプリはプログラムで非表示にすることができます。以下は、ランチャーメニューからアプリを非表示にするコードです。これはAndroid10でも問題なく動作します

// 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)

于 2020-10-03T14:30:10.707 に答える