public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
// 获取具体项目的包名
String specificProjectPackageName = getSpecificProjectPackageName();
// 延迟 3 秒后跳转到具体项目的 Activity
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
navigateToAppActivity(SplashActivity.this, specificProjectPackageName);
}
}, 3000);
}
private String getSpecificProjectPackageName() {
try {
// 获取应用程序的元数据信息
ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
// 从元数据中获取具体项目的包名值
String specificProjectPackageName = appInfo.metaData.getString("com.example.screenapptest.PACKAGE_NAME");
return specificProjectPackageName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
private void navigateToAppActivity(Context context, String specificProjectPackageName) {
try {
if (specificProjectPackageName != null) {
// 获取具体项目的目标 Activity
// Intent intent = context.getPackageManager().getLaunchIntentForPackage(specificProjectPackageName);
Class<?> activityClass = Class.forName(specificProjectPackageName);
Intent intent = new Intent(context, activityClass);
if (intent != null) {
// 启动具体项目的目标 Activity
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
finish(); // 结束当前的闪屏页 Activity
}catch (ClassNotFoundException e) {
e.printStackTrace();
// 处理类未找到的异常
}
}
}
<application>
<activity
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
appmodule
<meta-data android:name="com.example.screenapptest.PACKAGE_NAME" android:value="com.example.screenapptest.view.TestLoginActivity" />
<activity android:name=".view.TestLoginActivity" android:exported="true"/>