Android 实用代码七段(三)
前言
终于又攒了一篇出来,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com
正文
一、获取已经安装APK的路径
PackageManager pm = getPackageManager(); for (ApplicationInfo app : pm.getInstalledApplications(0)) { Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir); }
输出如下:
package: com.tmobile.thememanager, sourceDir: /system/app/ThemeManager.apk package: com.touchtype.swiftkey, sourceDir: /data/app/com.touchtype.swiftkey-1.apk
转载自这里。
二、 多进程Preferences数据共享
public static void putStringProcess(Context ctx, String key, String value) { SharedPreferences sharedPreferences = ctx.getSharedPreferences("preference_mu", Context.MODE_MULTI_PROCESS); Editor editor = sharedPreferences.edit(); editor.putString(key, value); editor.commit(); } public static String getStringProcess(Context ctx, String key, String defValue) { SharedPreferences sharedPreferences = ctx.getSharedPreferences("preference_mu", Context.MODE_MULTI_PROCESS); return sharedPreferences.getString(key, defValue); }
相关文章:http://zengrong.net/post/1687.htm
三、泛型ArrayList转数组
@SuppressWarnings("unchecked") public static <T> T[] toArray(Class<?> cls, ArrayList<T> items) { if (items == null || items.size() == 0) { return (T[]) Array.newInstance(cls, 0); } return items.toArray((T[]) Array.newInstance(cls, items.size())); }
四、 保存恢复ListView当前位置
private void saveCurrentPosition() { if (mListView != null) { int position = mListView.getFirstVisiblePosition(); View v = mListView.getChildAt(0); int top = (v == null) ? 0 : v.getTop(); //保存position和top } } private void restorePosition() { if (mFolder != null && mListView != null) { int position = 0;//取出保存的数据 int top = 0;//取出保存的数据 mListView.setSelectionFromTop(position, top); } }
可以保存在Preference中或者是数据库中,数据加载完后再设置。
五、调用 便携式热点和数据共享 设置
public static Intent getHotspotSetting() { Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); ComponentName com = new ComponentName("com.android.settings", "com.android.settings.TetherSettings"); intent.setComponent(com); return intent; }
六、 格式化输出IP地址
public static String getIp(Context ctx) { return Formatter.formatIpAddress((WifiManager) ctx.getSystemService(Context.WIFI_SERVICE).getConnectionInfo().getIpAddress()); }
七、 文件夹排序(先文件夹排序,后文件排序)
public static void sortFiles(File[] files) { Arrays.sort(files, new Comparator<File>() { @Override public int compare(File lhs, File rhs) { //返回负数表示o1 小于o2,返回0 表示o1和o2相等,返回正数表示o1大于o2。 boolean l1 = lhs.isDirectory(); boolean l2 = rhs.isDirectory(); if (l1 && !l2) return -1; else if (!l1 && l2) return 1; else { return lhs.getName().compareTo(rhs.getName()); } } }); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端