本篇内容主要讲解“Android怎么实现app本地切换logo和名称”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么实现app本地切换logo和名称”吧!

首先呢,在app的AndroidManifest.xml文件里,配置需要替换的logo和app名称
eg:下面配置了一套默认的,两套用于切换的icon和名称
android:enabled: 设为“true”时,就会启用当前别名的Activity,和当前的icon和当前的应用名称: 设为“false”时,表示停止使用当前别名的Activity
android:icon:当前别名的应用图标
android:label:当前别名的应用名称
android:name:别名,命名规则同Actively
android:targetActivity:通过别名调用的实际 Activity 的名称

<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.cgg.change_icon"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/Theme.ChangeIcon"><activityandroid:name=".MainActivity"/><activity-aliasandroid:name=".DefaultAliasActivity"android:enabled="true"android:icon="@mipmap/ic_launcher"android:label="ChangeIcon"android:targetActivity=".MainActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity-alias><activity-aliasandroid:name=".Alias1Activity"android:enabled="false"android:icon="@mipmap/app_logo_b"android:label="ChangeIcon1"android:targetActivity=".MainActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity-alias><activity-aliasandroid:name=".Alias2Activity"android:enabled="false"android:icon="@mipmap/app_logo_c"android:label="ChangeIcon2"android:targetActivity=".MainActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity-alias></application></manifest>

然后就是代码切换:相关方法介绍一下
通过 PackageManager 在清单文件中所定义的任何组件上切换 启用/停止 状态。
PackageManager.setComponentEnabledSetting
设置包组件(活动、接收器、服务、提供程序)的启用设置。此设置将覆盖组件在其清单中设置的任何启用状态。
参数:
componentName&ndash;要启用的组件
newState&ndash;组件的新启用状态。
flags&ndash;可选的行为标志

packagecom.cgg.change_iconimportandroid.content.ComponentNameimportandroid.content.Contextimportandroid.content.pm.PackageManagerimportandroidx.appcompat.app.AppCompatActivityimportandroid.os.Bundleimportandroid.widget.Buttonimportandroid.widget.ImageViewimportandroid.widget.RadioGroupimportandroidx.annotation.StringDefclassMainActivity:AppCompatActivity(){valAPP_D="com.cgg.change_icon.DefaultAliasActivity"valAPP_1="com.cgg.change_icon.Alias1Activity"valAPP_2="com.cgg.change_icon.Alias2Activity"privatevarmPackageManager:PackageManager?=nulloverridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)mPackageManager=applicationContext.packageManagerfindViewById<ImageView>(R.id.iv_0).setOnClickListener{ShowComponent(APP_D)}findViewById<ImageView>(R.id.iv_1).setOnClickListener{ShowComponent(APP_1)}findViewById<ImageView>(R.id.iv_2).setOnClickListener{ShowComponent(APP_2)}}privatefunShowComponent(app:String){packageManager.run{setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP)setComponentEnabledSetting(ComponentName(baseContext,app),PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP)}}}

布局也贴一下

<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ImageViewandroid:id="@+id/iv_0"android:layout_width="80dp"android:layout_height="80dp"android:scaleType="centerCrop"android:src="@mipmap/ic_launcher"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="30dp"/><ImageViewandroid:id="@+id/iv_1"android:layout_width="80dp"android:layout_height="80dp"android:scaleType="centerCrop"android:src="@mipmap/app_logo_b"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@id/iv_0"android:layout_marginTop="30dp"/><ImageViewandroid:id="@+id/iv_2"android:layout_width="80dp"android:layout_height="80dp"android:scaleType="centerCrop"android:src="@mipmap/app_logo_c"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@id/iv_1"android:layout_marginTop="30dp"/></androidx.constraintlayout.widget.ConstraintLayout>

功能说完了,下面说下缺陷

替换的icon需要打包的时候就预埋到代码里icon切换的时候和闪退一样上过含activity-alias包后,如果再更新不含activity-alias包,会导致 APP 从桌面再也找不到的风险

到此,相信大家对“Android怎么实现app本地切换logo和名称”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!