我正在开发一个应用程序,其中安装后需求是隐藏应用程序图标。应用程序图标将永远不会显示在主屏幕中的任何位置。我将使用短代码启动应用程序。下面隐藏app ico的代码。
ComponentName componentToDisable = new ComponentName(context, Splash.class);
context.getPackageManager().setComponentEnabledSetting(componentToDisable,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
但我的问题是
如何在安装我的应用程序之后调用上面的代码行。
我将如何识别我的应用程序刚刚安装。
我在menifest文件中添加了以下广播
<receiver android:name=".utilities.InstallApplicationReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
</intent-filter>
</receiver>
下面的是我的bradcast类
public class InstallApplicationReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase("android.intent.action.PACKAGE_ADDED")) {
ComponentName componentToDisable = new ComponentName(context, Splash.class);
context.getPackageManager().setComponentEnabledSetting(componentToDisable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
}
}
但仍然没有隐藏应用程序图标:(
答案 0 :(得分:0)
从Splash活动的清单文件中删除此意图过滤器,您将无法在主屏幕中看到您的应用程序。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
答案 1 :(得分:0)
或者您可以尝试从应用的AndroidManifest.xml中删除此部分。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
答案 2 :(得分:-1)
//隐藏应用程序图标
PackageManager p = context.getPackageManager();
ComponentName componentName = new ComponentName(this,SplashActivity.class);
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Receiver for Outgoing call,这样您就可以从拨号盘打开应用程序:
public class CodeReceiver extends BroadcastReceiver
{
SharedPreferences preferences;
@Override
public void onReceive(Context context, final Intent intent) {
preferences=context.getSharedPreferences(Constant.PREF_NAME, context.MODE_PRIVATE);
if (intent.getAction().equals(android.content.Intent.ACTION_NEW_OUTGOING_CALL)){
String phoneNumber=intent.getExtras().getString(android.content.Intent.EXTRA_PHONE_NUMBER);
if(phoneNumber.equals((Constant.PINCODE_).toString())) {
setResultData(null);
PackageManager p = context.getPackageManager();
ComponentName componentName = new ComponentName("apppackage","apppackage.firstscreen");
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent i = new Intent(context, SplashActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
}
清单:
<receiver
android:name=".classes.CodeReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>