当前位置:   article > 正文

【Android Studiio】default activity 原生安卓和uniapp默认启动分析(uniapp添加MainActivity)

【Android Studiio】default activity 原生安卓和uniapp默认启动分析(uniapp添加MainActivity)

在这里插入图片描述
在这里插入图片描述
探究方向:找到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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

在这里插入图片描述
在这里插入图片描述

二、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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

在这里插入图片描述

进入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:

  1. 创建自定义的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作为应用的入口
	    }
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  1. 修改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的启动入口,直接修改它可能会影响应用的正常加载。

  1. 考虑使用Intent跳转
    如果你的目的是在应用的某个阶段从自定义的MainActivity跳转到uni-app的主界面,你可以通过Intent来实现:
Intent intent = new Intent(this, io.dcloud.PandoraEntry.class);
startActivity(intent);
  • 1
  • 2

但请注意,io.dcloud.PandoraEntry可能不是直接可用的,因为uni-app的Android打包方式可能会将其封装或隐藏。在这种情况下,你可能需要查找实际生成的入口Activity名称(这通常是一个内部或隐藏的类名),或者使用uni-app提供的API或方法来触发页面跳转。

  1. 注意事项
    直接修改PandoraEntry或将其替换为自定义的MainActivity作为应用入口可能会导致uni-app无法正常工作。
    如果你只是想在应用启动后显示一个自定义的页面,然后跳转到uni-app的主界面,建议使用Intent从自定义页面跳转到uni-app的某个页面,而不是直接操作PandoraEntry。
    始终确保你的修改与uni-app的文档和最佳实践保持一致,以避免不必要的问题
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/923198
推荐阅读
相关标签
  

闽ICP备14008679号