在未设置启动 activity 的情况下启动应用程序

Beginning an application while no starting activity set

我想启动我的应用程序并在应用程序的 onCreate 方法中检查连接状态,然后决定启动哪个 activity!我知道我可以在 setLayout 之前完成()一个默认的 MAIN/LAUNCHER activity ,同时如果它是相关的话开始另一个,但这对我来说似乎很混乱!

所以,我想知道是否可以启动一个不显示 activity 和 action.MAIN / category.LAUNCHER 的应用程序?我试过这种方法,但它不起作用!我的意思是应用程序似乎启动了,但没有显示 activity!

(这不是我的真实代码示例,我现在不在家!可能缺少一些参数和内容,但我想您明白了!)

public class MyApp extends Application {
    onCreate() {
        Intent intent = new Intent(this, MyActivity.class);
        intent.setFlags(Intent.NEW_TASK);
        this.startActivity(intent);
    }
}

此外,我的应用程序的第一个 activity 可能是一个 AlertDialog,我想知道我是否可以在没有 activity 启动时启动一个,或者我是否被迫设置一个 activity的主题@android:style/Theme.Dialog?

我尝试了与上述示例相同的方法,但结果相同:logcat 说应用程序处于活动状态,但根本没有打印...

告诉我我是否不够清楚以及在哪方面!我不会说英语,也不习惯在论坛上提问!

你必须走这条路:

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.some_empty_or_loading_view); //optional probably, not sure

        //TODO: check whatever you want
        if(condition) {
            startActivity(this, SomeActivity.class);
        } else {
            startActivity(this, AnotherActivity.class);
        }

        finish();
    }
}

Specify Your App's Launcher Activity

当用户从主屏幕选择您的应用程序图标时,系统会为您已声明为 "launcher"(或"main") activity。这是作为应用程序用户界面主要入口点的 activity。

您可以在 Android 清单文件 AndroidManifest.xml 中定义哪个 activity 用作主要 activity,它位于项目目录的根目录。

您的应用程序的主要 activity 必须在清单中声明,其中包含 MAIN 操作和 LAUNCHER 类别。例如:

<activity android:name=".MainActivity" android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

注意:当您使用 Android SDK 工具创建新的 Android 项目时,默认项目文件包含一个 Activity class,它在清单中声明为这个过滤器。

如果您的某个活动未声明 MAIN 操作或 LAUNCHER 类别,则您的应用图标将不会出现在主屏幕的应用列表中