安卓代码实现安装后图标隐藏,仅能在设置中找到该应用,并通过service关联启动
时间: 2024-03-12 15:49:07 浏览: 27
实现安装后图标隐藏,仅能在设置中找到该应用,并通过 `Service` 关联启动的方法如下:
1. 在 `AndroidManifest.xml` 文件中,将应用的 `MainActivity` 的 `intent-filter` 中的 `android.intent.category.LAUNCHER` 移除,以隐藏应用图标。
```xml
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:excludeFromRecents="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
```
2. 创建一个新的 `Activity`,用于启动应用,并在 `AndroidManifest.xml` 文件中声明。
```xml
<activity
android:name=".LauncherActivity"
android:theme="@style/AppTheme.NoActionBar"
android:excludeFromRecents="true"
android:exported="true"
android:taskAffinity="">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
```
3. 在 `LauncherActivity` 中启动应用并关闭自身。
```java
public class LauncherActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MyService.class);
startService(intent);
finish();
}
}
```
4. 创建一个 `Service`,用于执行应用的主要逻辑。
```java
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 执行应用的主要逻辑
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
```
5. 在 `AndroidManifest.xml` 文件中声明 `Service`。
```xml
<service
android:name=".MyService"
android:exported="false"/>
```
这样,应用安装完成后,图标将会被隐藏,用户只能在设置中找到该应用。当用户点击设置中的应用图标时,将会启动 `LauncherActivity`,该 `Activity` 会启动 `MyService`,从而执行应用的主要逻辑。