私は(合法的な)スパイプログラムを書いています。このプログラムをランチャーに非表示にしたい(アイコンが表示されないようにする)。<category android:name="android.intent.category.LAUNCHER" />
から行を削除しようとしましAndroidManifest.xml
たが、ユーザーは最初の起動モード(構成)でアプリケーションを起動できません。誰がアイデアを持っていますか?
どうすればいいですか?
アプリをサービスにする必要があります。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);
}
}
<category android:name="android.intent.category.LAUNCHER"/>
AndroidManifest.xmlファイルからを削除できます。
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
ただし、Android Studioがアプリをコンパイルできるように追加することを忘れないでください(ランチャーからは非表示になっています):):D
削除する
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
マニフェストファイルから
アプリはプログラムで非表示にすることができます。以下は、ランチャーメニューからアプリを非表示にするコードです。これは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)