如何从应用程序更改启动器图标及其标签

时间:2013-12-31 03:27:48

标签: android android-launcher

如何在Android中的应用程序运行时更改启动器图标及其标签? (如果可能的话)
我的意思是AndroidManifest.xml中定义的属性:android:iconandroid:label。我想用我从相机拍摄的图像替换它。

2 个答案:

答案 0 :(得分:6)

整个答案来自this post,它来自P-ACommonsWare


除非通过软件升级,否则无法更改已签名并密封的APK中的清单或资源。要么 试试这个,它对我来说很好,但对所有设备都不确定:

  1. 修改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>
    
  2. 为您的应用为每个图标创建<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>
    
  3. 以编程方式设置ENABLE属性以进行必要的

    getPackageManager().setComponentEnabledSetting(
    new ComponentName("ru.quickmessage.pa", "ru.quickmessage.pa.MainActivity-Red"), 
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
    
  4. 注意,必须启用至少一个,并且上面的代码完美地工作到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}}。