开发者

Remove from launcher BUT keep enabled / startable

开发者 https://www.devze.com 2023-02-11 16:51 出处:网络
i tried coding it, i tried solving it with google and stackoverflow, nothing found :=) so hopefully someone else has a better idea, im not sure if i get everything right:

i tried coding it, i tried solving it with google and stackoverflow, nothing found :=) so hopefully someone else has a better idea, im not sure if i get everything right:

i have 2 applications: ad (main app) / adfree-pro (just license starts ad app without ads ;P)

so the problem is, i want to have a pro 开发者_如何学Pythonversion (with pro icon) in the launcher, which starts the normal-ad app, which is (the normal ad-app) not in the launcher.

i tried removing the ad-app from the launcher (which due to my research should JUST remove it from the launcher)

pkgMgr.setComponentEnabledSetting(new ComponentName(PACKAGE_NAME, PACKAGE_NAME + ".Main"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

which results to: the icons in the launcher are correct ;) BUT the application can't be found on the phone, launched, started, even not with a launcher pro activity shortcut. it seems to be there (shortcuts can be created) but i crashes with an activity exception when i try to launch it.

02-18 14:38:59.237: ERROR/AndroidRuntime(9941): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {PACKAGE_NAME/PACKAGE_NAME.Main}; have you declared this activity in your AndroidManifest.xml?

which doesnt seem to belong (the error message) it looks like there has happened more to the application than just simply removed the entry in the launcher.

thanks a lot guys, every workaround for this situation appreciated :) best regards :)


You can't have app installed and hide it's launcher icon. The way I'm addressing it with my application which works similar to yours that I don't try to fight icons but instead the app can be launched using ether icon. Obviously you don't have to do in the main (free) app and the code that launches app from your pro icon will look something like the following:

/** 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();
    }
}

It's up to you to implement appExists() which is probably some sort of license check

Of course, alternatively you can develop your app's common code as library project and then distribute it in 2 flavors without duplicating the code


BUT the application can't be found on the phone, launched, started, even not with a launcher pro activity shortcut.

Not application, but activity.

So, if your LAUNCHER activity is BaseActivity, you may create something like BaseFakeActivity (don't forget to set it as LAUNCHER in your manifest instead of your BaseActivity) and which only function is to start your BaseActivity and then finish() itself.

Now you may hide your BaseFakeActivity but you'll still be possible to interact with your BaseActivity.

P.S.: Don't forget to test your app's behaviour after doing things this way ;)

0

精彩评论

暂无评论...
验证码 换一张
取 消