在客户端电话上签名APK

时间:2011-12-12 14:45:12

标签: java android apk

这是我在StackOverflow上的第一个问题,我的英语很差,所以请:D。我这样做只是为了好玩。我想更改每个用户的图标,让用户更改应用程序的图标。我想如果我想这样做,我必须阅读apk自己,解压缩它,改变che drawable / icon.png并重建它,最后签名。 我尝试了一些代码,但都失败了。导入的原因是,package sun.securate.*不在Android Java框架中。我写了一些代码来做到这一点,但它失败了-_- 谁能帮我?我可以分享我已编写的代码。 请帮助我!

2 个答案:

答案 0 :(得分:1)

另外一个解决方法是为Home Screen创建快捷方式图标,它启动与启动器相同的Activity。这样你的抽屉中的启动器图标将是实际的,但在主屏幕上你将有不同的图标。如果您知道包信息,也可以探索为其他应用创建快捷方式的想法。

价:

对于包裹信息,这里是doc

PackageManager pkgMgr = getPackageManager();

为了创建捷径,这里是片段(这只是为了说明):

    // Setting the intent class ActivityClassToLaunch you need to try PackageManager
    Intent i = new Intent(activity, ActivityClass.class);

    i.setAction(Intent.ACTION_MAIN);
    i.addCategory(Intent.CATEGORY_LAUNCHER);

    Intent result = new Intent();
    result.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i);

    result.putExtra(Intent.EXTRA_SHORTCUT_NAME, activity.getString(R.string.app_name));

    ShortcutIconResource iconResource = null;

    iconResource = ShortcutIconResource.fromContext(activity, R.drawable.new_app_icon);

    result.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);

    result.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    activity.sendBroadcast(result);

如果您只是想让用户更改应用程序图标,为什么不从SD卡加载图标。如果用户未指定图标,则随包附带的图标将在那里。

以下是可以帮助您的代码段。

onCreate(...)
  setContentView(...); 
  setFeatureDrawable(Window.FEATURE_LEFT_ICON, 
     <your_drawable>); 
....
}

如果这不起作用,请尝试在setFeatureDrawable

之前致电setContentView

答案 1 :(得分:0)

除非通过软件升级,否则无法更改已签名密封的APK的启动器图标。