从启动器中删除但是保持启用/可启动

时间:2011-02-18 13:50:06

标签: android android-activity launcher

我尝试编码,我尝试用谷歌和stackoverflow解决它,没有发现:=)所以希望别人有更好的主意,我不确定我是否把一切都搞定了:

我有2个应用程序:ad(主应用程序)/ adfree-pro(只是许可证启动没有广告的广告应用程序; P)

所以问题是,我想在启动器中安装一个专业版(带专业版图标),启动普通广告应用,这是(普通广告应用)不在启动器中。< /强>

我尝试从启动器中删除广告应用程序(由于我的研究应该只能从启动器中删除它)

  

pkgMgr.setComponentEnabledSetting(新的ComponentName(PACKAGE_NAME,PACKAGE_NAME +“。主”),                               PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);

导致:启动器中的图标正确;)但是无法在手机上启动,启动,启动应用程序,甚至没有启动器专业活动快捷方式。它似乎在那里(可以创建快捷方式)但是当我尝试启动它时,我会因活动异常而崩溃。

  

02-18 14:38:59.237:ERROR / AndroidRuntime(9941):引起:android.content.ActivityNotFoundException:无法找到显式活动类{PACKAGE_NAME / PACKAGE_NAME.Main};你有没有在AndroidManifest.xml中声明这个活动?

似乎不属于(错误消息) 看起来应用程序发生了更多,而不仅仅是删除了启动器中的条目。

非常感谢, 这种情况的每个解决方法都赞赏:) 最好的问候:)

2 个答案:

答案 0 :(得分:0)

您无法安装应用并隐藏它的启动器图标。我用我的应用程序处理它的方式与我的类似,我不会尝试对抗图标,而是可以使用以太网图标启动应用程序。显然你不必在主(免费)应用程序中做,从你的专业版图标启动应用程序的代码将如下所示:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    // check if main app is installed. If yes then start it
    if (appExists()) {
        Log.d(TAG, "Started main app from Pro");
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("myapp://com.myapp.main"));
        startActivity(intent);
        finish();
    } else {
        // display view with link back to Market 
        onAppNotExists();
    }
}

由您来实施appExists(),这可能是某种许可检查

当然,您也可以将应用程序的公共代码开发为library project,然后以2种方式分发,而无需复制代码

答案 1 :(得分:0)

  

但是手机上找不到应用程序,启动,启动,   甚至没有启动器专业活动快捷方式。

不是申请,而是活动。

因此,如果您的LAUNCHER活动为BaseActivity,您可以创建BaseFakeActivity之类的内容(不要忘记在清单中将其设置为LAUNCHER而不是您的BaseActivity},其唯一的功能是启动您的BaseActivity,然后启动finish()

现在您可以隐藏BaseFakeActivity,但您仍然可以与BaseActivity进行互动。

P.S。:不要忘记以这种方式测试你的应用程序的行为;)