文章目录
- 思路:
- 一、原生安卓
- 二、uniapp
- 三、在uni-app项目中,如果你想要加入自定义的MainActivity(例如Android平台)
探究方向:找到Default Activity
思路:
- 在Android开发中,"default activity"这个概念通常指的是应用启动时默认会加载和显示的那个Activity。AndroidManifest.xml文件是Android应用中一个非常重要的文件,它用于声明应用的组件、权限、所需的其他Android组件等。在这个文件中,你可以指定哪个Activity是应用的默认启动Activity。
- 在AndroidManifest.xml文件中,每个标签代表应用中的一个Activity。要设置默认启动的Activity,你需要在该Activity的
<intent-filter>
中指定action为android.intent.action.MAIN
,并设置category为android.intent.category.LAUNCHER
。当设备上的应用启动器(如Launcher应用)查找可以显示在启动器上的活动时,它会查找具有这些intent-filter设置的Activity。
一、原生安卓
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!--
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
-->
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@drawable/logo"
android:label="@string/app_name"
android:roundIcon="@drawable/logo"
android:supportsRtl="true"
android:theme="@style/Theme.XXXXXXfX"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
</manifest>
二、uniapp
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.simple">
<application
android:allowBackup="true"
android:allowClearUserData="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true">
<activity
android:name="io.dcloud.PandoraEntry"
android:configChanges="orientation|keyboardHidden|keyboard|navigation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:hardwareAccelerated="true"
android:theme="@style/TranslucentTheme"
android:screenOrientation="user"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="io.dcloud.PandoraEntryActivity"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard|smallestScreenSize|screenLayout|screenSize|uiMode"
android:hardwareAccelerated="true"
android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"
android:screenOrientation="user"
android:theme="@style/DCloudTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme=" " />
</intent-filter>
</activity>
<meta-data
android:name="dcloud_appkey"
android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
</application>
</manifest>
进入io.dcloud.PandoraEntry
三、在uni-app项目中,如果你想要加入自定义的MainActivity(例如Android平台)
从这个自定义的MainActivity跳转到uni-app的默认入口io.dcloud.PandoraEntry,你需要对Android原生代码进行一些修改。uni-app是一个使用Vue.js开发所有前端应用的框架,它可以编译到iOS、Android等多个平台,但涉及到原生层面的修改时,就需要直接操作对应平台的原生代码。
以下是一个基本的步骤说明,如何在Android平台上加入自定义的MainActivity并跳转到io.dcloud.PandoraEntry:
- 创建自定义的MainActivity
首先,在你的Android项目中(通常是android/app/src/main/java/你的包名/目录下),创建一个新的Java类文件,比如命名为MainActivity.java。然后,在这个类中继承自AppCompatActivity或其他适合你的应用的基类,并覆盖onCreate方法。
package 你的包名;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 如果有布局文件
// 这里可以添加跳转到PandoraEntry的逻辑
// 注意:直接跳转可能需要一些额外的处理,因为PandoraEntry是uni-app的启动入口
// 通常不建议直接从这里跳转,而是让PandoraEntry作为应用的入口
}
}
- 修改AndroidManifest.xml
在android/app/src/main/AndroidManifest.xml文件中,你需要将标签的android:name属性从默认的io.dcloud.PandoraEntry更改为你的MainActivity(通常不推荐这么做,因为这可能会破坏uni-app的正常启动流程)。但如果你确实需要这样的跳转,你可以保留PandoraEntry作为入口,然后在MainActivity中通过Intent跳转。
然而,更常见的做法是将MainActivity作为应用启动后的第一个可见页面,并在需要时通过Intent跳转到PandoraEntry。但是,请注意,PandoraEntry是uni-app的启动入口,直接修改它可能会影响应用的正常加载。
- 考虑使用Intent跳转
如果你的目的是在应用的某个阶段从自定义的MainActivity跳转到uni-app的主界面,你可以通过Intent来实现:
Intent intent = new Intent(this, io.dcloud.PandoraEntry.class);
startActivity(intent);
但请注意,io.dcloud.PandoraEntry可能不是直接可用的,因为uni-app的Android打包方式可能会将其封装或隐藏。在这种情况下,你可能需要查找实际生成的入口Activity名称(这通常是一个内部或隐藏的类名),或者使用uni-app提供的API或方法来触发页面跳转。
- 注意事项
直接修改PandoraEntry或将其替换为自定义的MainActivity作为应用入口可能会导致uni-app无法正常工作。
如果你只是想在应用启动后显示一个自定义的页面,然后跳转到uni-app的主界面,建议使用Intent从自定义页面跳转到uni-app的某个页面,而不是直接操作PandoraEntry。
始终确保你的修改与uni-app的文档和最佳实践保持一致,以避免不必要的问题