安装后隐藏应用程序图标

时间:2016-07-30 08:46:58

标签: android hide android-launcher launching-application

我正在开发一个应用程序,其中安装后需求是隐藏应用程序图标。应用程序图标将永远不会显示在主屏幕中的任何位置。我将使用短代码启动应用程序。下面隐藏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);
    }
}

}

但仍然没有隐藏应用程序图标:(

3 个答案:

答案 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>