如何在Android中的应用程序运行时更改启动器图标及其标签? (如果可能的话)
我的意思是AndroidManifest.xml
中定义的属性:android:icon
和android:label
。我想用我从相机拍摄的图像替换它。
答案 0 :(得分:6)
整个答案来自this post,它来自P-A和CommonsWare。
除非通过软件升级,否则无法更改已签名并密封的APK中的清单或资源。要么 试试这个,它对我来说很好,但对所有设备都不确定:
修改AndroidManifest.xml中的MainActivity部分,从中删除,在intent-filter部分中与MAIN类别对齐。
<activity android:name="ru.quickmessage.pa.MainActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:theme="@style/CustomTheme"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />//DELETE THIS LINE
</intent-filter>
</activity>
为您的应用为每个图标创建<activity-alias>
。喜欢这个
<activity-alias android:label="@string/app_name"
android:icon="@drawable/icon"
android:name=".MainActivity-Red"
android:enabled="false"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
以编程方式设置ENABLE属性以进行必要的
getPackageManager().setComponentEnabledSetting(
new ComponentName("ru.quickmessage.pa", "ru.quickmessage.pa.MainActivity-Red"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
注意,必须启用至少一个,并且上面的代码完美地工作到4.0未测试到&gt; 4.0。
答案 1 :(得分:4)
编辑:您的原始答案未指定您希望在运行时执行此操作。下面是如何在编译之前完成它。至于在运行时以编程方式执行:
来自this answer:
除非通过软件升级,否则您无法更改已签名并密封的APK中的清单或资源。
但是,接受的答案还是想出了一个“黑客”或一些作弊方式(我猜)。我没有测试过,但有一个消息来源可供您查看。
或者,this link显然使用“小部件”方法描述了如何执行此操作。
所以,让我们说你的清单是这样的:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="yourPackage"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
...
您可以通过将图像放入可绘制文件夹来更改启动器图标:
Project folder --> res --> all the drawables
然后,您可以将android:icon="@drawable/ic_launcher"
更改为android:icon="@drawable/whateverTheNameOfTheImageIsYouPutInTheDrawablesFolders"
更改标签:
打开位于以下位置的strings.xml
文件:
Project folder --> res --> values --> strings.xml
查找看起来像这样的字符串:
<string name="app_name">Your App Name</string>
只需将Your App Name
更改为您想要的标签。
要点:
android:icon="@drawable/ic_launcher"
确定您的启动器图标,因此只需将图像添加到可绘制文件夹中,然后将ic_launcher
更改为您希望成为图标的图像名称。
android:label="@string/app_name"
确定您的“标签”,因此只需在app_name
文件中查找@string/app_name
(因为标签已引用strings.xml
)并更改{{}的内容1}}。