Android 主界面应用图标的动态修改
来源:互联网 发布:win10连上无线没网络 编辑:程序博客网 时间:2024/05/22 05:10
使用android 手机的用户,大多数人都喜欢将自己常用的应用放置于主界面上面;对于放置于桌面上的应用图标,系统具有两个接口允许所有的应用通过广播的方式进行删除和添加;
例如:
static final String ACTION_INSTALL = "com.android.launcher.action.INSTALL_SHORTCUT"; static final String ACTION_UNINSTALL = "com.android.launcher.action.UNINSTALL_SHORTCUT";
卸载:
void unInstallShortcutToDeskTop() { Intent shortcut = new Intent(ACTION_UNINSTALL); String label = this.getResources().getString(R.string.app_name); String packageName = this.getPackageName(); PackageManager packageManager = this.getPackageManager(); try { ApplicationInfo appInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA|PackageManager.GET_UNINSTALLED_PACKAGES); if( packageName==null){ packageName = packageManager.getApplicationLabel(appInfo).toString(); } } catch (NameNotFoundException e) { e.printStackTrace(); return; } shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, label); ComponentName comp = new ComponentName(packageName, packageName +"." + this.getLocalClassName()); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); sendBroadcast(shortcut); }
创建:
void addShortcutToDeskTop(){ Intent shortcut = new Intent(ACTION_INSTALL); BitmapDrawable iconBitmapDrawabel = null; String label = this.getResources().getString(R.string.app_name); String packageName = this.getPackageName(); PackageManager packageManager = getPackageManager(); try { ApplicationInfo appInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA|PackageManager.GET_ACTIVITIES); if(packageName==null){ packageName = packageManager.getApplicationLabel(appInfo).toString(); } if(iconBitmapDrawabel==null){ iconBitmapDrawabel = (BitmapDrawable) packageManager.getApplicationIcon(appInfo); } } catch (NameNotFoundException e) { e.printStackTrace(); return; } shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, label); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconBitmapDrawabel.getBitmap()); shortcut.putExtra("duplicate", false); String localClassName = this.getLocalClassName(); ComponentName comp = new ComponentName( packageName, packageName +"." + this.getLocalClassName() ); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setFlags(Intent.FLAG_FROM_BACKGROUND).setComponent(comp)); sendBroadcast(shortcut); }
由上面的接口,用户可以自定义主界面上的应用图标的修改;如ios 中的在应用图标中添加数字;只需要先调用上述的unInstallShortcutToDeskTop()将主界面上的应用图标删除 ;然后调用addShortcutToDeskTop() ; 需要在addShortcutToDeskTop() 中,修改 shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconBitmapDrawabel.getBitmap());
为自己想要的图标显示就可以;
思考:由于所有的应用都可以通过广播使用这两个接口;那么如果应用开发者替换掉了其他应用程序图标的入口而改为了自己自定义的应用入口,并对自定义的应用进行伪装,那么是否会出现应用开发者窃取用户信息等安全问题呢?
0 0
- Android 主界面应用图标的动态修改
- android动态修改应用图标和应用名称
- 动态修改桌面应用图标
- 如何修改Android应用的图标,名称
- Android利用activity-alias动态修改应用图标和名称
- android 系统主界面底部工具栏上的图标显示与修改
- Android 修改应用图标icon
- android 如何实现无启动界面和应用图标的
- Android动态修改 TabHost 标签的图标和标题
- 修改MFC主窗口界面标题和图标的方法
- 修改MFC主窗口界面标题和图标的方法
- android 桌面应用图标修改无效的问题
- 修改android N的Launcher3桌面应用图标
- Android Launcher3修改应用图标,隐藏应用图标
- 【android】修改android默认应用图标
- AndroidManifest.xml之动态修改应用的图标和应用名称
- Android 4.0 修改Launcher 应用图标文字大小
- 如何用Android studio修改应用图标
- MFC框架原理以及消息运行机制1
- Using command redirection operators in Windows
- 在ListView的Item中使用RadioButton实现单选
- 根据域名获取IP地址
- proteus8.0 下载地址
- Android 主界面应用图标的动态修改
- MFC框架原理以及消息运行机制2
- Linux - 终端(terminal) Bash 基础
- 调用显示系统默认的输入法方法一、
- [Java] JDBC 03 TestPrepStmt.java
- android 的activity中addContentView 和 setContentView 的区别
- iOS开发中的单元测试(一)
- HTC 重力感应传感器编程资料总结
- MFC消息机制