AndroidManifest.xml之动态修改应用的图标和应用名称
来源:互联网 发布:一分钱图片淘宝怎么弄 编辑:程序博客网 时间:2024/05/30 20:08
一、activity-alias标签
Android支持动态修改应用程序的图标和应用名称。如双11双12的时候淘宝和京东等APP在不需要更新的情况下自动更换了图标,所以动态更新应用的图标和名称的最佳应用场景就像电商类项目的促销活动时使用。
Android之所以支持动态更新图标是因为在AndroidManifest.xml中有一个activity-alias标签,从标签名字上就能看出这是activity的别名。我们看官网的介绍,
https://developer.android.com/guide/topics/manifest/activity-alias-element.html
An alias for an activity, named by the targetActivity attribute. The target must be in the same application as the alias and it must be declared before the alias in the manifest.
大致意思是 :这是属性targetActivity:的activity的别名,这个属性targetActivity:的activity跟这个别名必须在同一个application下,并且targetActivity必须在这个别名钱定义。
下面看看这个activity-alias标签都有那些属性
<activity-alias android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:targetActivity="string" > . . . </activity-alias>
好多属性都跟activity标签的属性一致的,主要看定义的时候提到的targetActivity属性,这个属性的值是你要用别名代替的那个activity,而且这个activity必须在这个activity-alias之前定义。这里说一点,如果我们想动态的更换图标和改名称,就必须是申明`
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter>` 这个启动activity的别名,在别名里面修改。
二、动态修改图标和名称
1、设置launch activity的别名:
<activity android:name=".MainActivity" android:icon="@mipmap/ic_launcher" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity-alias android:name=".Test" android:enabled="false" android:icon="@mipmap/launch_01" android:label="测试应用名称" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias>
这里设置了mainactivity的别名,在activity-alias中修改icon和label属性,修改成想要更换的图标和名称,这个name就是别名的名字,在activity中就是activity的类名。一定不能漏掉android:targetActivity=".MainActivity"
属性。
2、在需要更换的地方操作
首先我在布局文件中activity_main.xml定义一个简单的按钮,当点击的时候更换图标。
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns: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="com.pursue.it.iconchange.MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改图标" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /></android.support.constraint.ConstraintLayout>
在mainactivity中:
package com.pursue.it.iconchange;import android.content.ComponentName;import android.content.pm.PackageManager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { changeIcon(); } }); }//修改图标和名称的方法 private void changeIcon() { PackageManager pm = getApplicationContext().getPackageManager(); System.out.println(getComponentName()); //去掉旧图标 pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); //显示新图标 pm.setComponentEnabledSetting(new ComponentName( getBaseContext(), "com.pursue.it.iconchange.Test"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); }}
点击按钮等待数秒,可以在手机桌面上看到图标和名称自动更换了。
实际开发中,应该是根据网络请求的结果来触发changeIcon()方法来更换图标。
demo地址:http://download.csdn.net/download/sushineboy/10145540
- AndroidManifest.xml之动态修改应用的图标和应用名称
- android动态修改应用图标和应用名称
- Android利用activity-alias动态修改应用图标和名称
- 如何修改Android应用的图标,名称
- Android读取应用的名称和图标
- 动态修改桌面应用图标
- iOS开发之同一应用设置不同图标和名称
- iOS开发之同一应用设置不同图标和名称
- iOS开发之同一应用设置不同图标和名称
- iOS开发之同一应用设置不同图标和名称
- iOS之应用修改名称
- (一)—— 修改应用名称 应用图标
- 微信开放平台修改微信分享的应用小图标与应用名称,应用名称更改了应用小图标未更改的问题
- Android 主界面应用图标的动态修改
- 修改IOS应用的名称
- Android应用的清单文件:AndroidManifest.xml
- AndroidManifest.xml:Android应用的清单文件
- 修改web应用的部署应用名称
- 如何去除windows显示“未知发行商”的提示
- 判断输入的数是否是素数
- java获取Wav文件的属性及Wav音频文件的合成
- cocos2d-lua3.7控件篇(三)-滚动条
- Linux上运行maven项目报错Fatal Error: Unable to find package java.lang in classpath or bootclasspath
- AndroidManifest.xml之动态修改应用的图标和应用名称
- 利用DotNetFactory调用.NET类库
- mac显示隐藏目录
- [原创] Python 使用指定的网卡发送HTTP请求
- go 调动C动态链接库
- linux查找日志技巧
- oracle顺序问题
- 专业软件开发、网站建设、手机App开发、营销软件和资源的销售等
- Fiddler弱网测试