Android有用代码(一)
有时候,需要一些小的功能,找到以后,就把它贴到了博客下面,作为留言,查找起来很不方便,所以就整理一下,方便自己和他人。
一、 获取系统版本号:
- PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(),0);
- int versionCode=nfo.versionCode
- string versionName=info.versionNam
PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
int versionCode=nfo.versionCode
string versionName=info.versionNam
二、获取系统信息:
- <span style="font-size: 16px;">String archiveFilePath="sdcard/download/Law.apk";//安装包路径
- PackageManager pm = getPackageManager();
- PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
- if(info != null){
- ApplicationInfo appInfo = info.applicationInfo;
- String appName = pm.getApplicationLabel(appInfo).toString();
- String packageName = appInfo.packageName; //得到安装包名称
- String version=info.versionName; //得到版本信息
- Toast.makeText(test4.this,"packageName:"+packageName+";version:"+version, Toast.LENGTH_LONG).show();
- Drawable icon = pm.getApplicationIcon(appInfo);//得到图标信息
- TextView tv = (TextView)findViewById(R.id.tv); //显示图标
- tv.setBackgroundDrawable(icon);</span>
String archiveFilePath="sdcard/download/Law.apk";//安装包路径
PackageManager pm = getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
if(info != null){
ApplicationInfo appInfo = info.applicationInfo;
String appName = pm.getApplicationLabel(appInfo).toString();
String packageName = appInfo.packageName; //得到安装包名称
String version=info.versionName; //得到版本信息
Toast.makeText(test4.this, "packageName:"+packageName+";version:"+version, Toast.LENGTH_LONG).show();
Drawable icon = pm.getApplicationIcon(appInfo);//得到图标信息
TextView tv = (TextView)findViewById(R.id.tv); //显示图标
tv.setBackgroundDrawable(icon);
三、获取安装路径和已安装程序列表
- <span style="font-size: 16px;">(1)android中获取当前程序路径
- getApplicationContext().getFilesDir().getAbsolutePath()
- (2)android取已安装的程序列表
- List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);</span>
(1)android中获取当前程序路径
getApplicationContext().getFilesDir().getAbsolutePath()
(2)android取已安装的程序列表
List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);
四、获取图片、应用名、包名
- <span style="font-size: 16px;">PackageManager pManager = MessageSendActivity.this.getPackageManager();
- List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this);
- for(int i=0;i<appList.size();i++) {
- PackageInfo pinfo = appList.get(i);
- ShareItemInfo shareItem = new ShareItemInfo();
- //set Icon
- shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
- //set Application Name shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
- //set Package Name shareItem.setPackageName(pinfo.applicationInfo.packageName);
- }</span>
PackageManager pManager = MessageSendActivity.this.getPackageManager();
List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this); for(int i=0;i<appList.size();i++) { PackageInfo pinfo = appList.get(i); ShareItemInfo shareItem = new ShareItemInfo(); //set Icon shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo)); //set Application Name shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString()); //set Package Name shareItem.setPackageName(pinfo.applicationInfo.packageName);
}
五、解决listview上 Item上有按钮时 item本身不能点击的问题:
- <span style="font-size: 16px;">1. 在item试图上面添加代码: android:descendantFocusability="blocksDescendants"
- 2.在listview里 添加代码 android:focusable="true"</span>
1. 在item试图上面添加代码: android:descendantFocusability="blocksDescendants"
2.在listview里 添加代码 android:focusable="true"
六、不让文本框输入中文:
在xml文件里面
- <spanstyle="font-size: 16px;">android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./~!@#$%^*()_+}{:?&<>"'"
- 这样就不会输入中文了。
- </span>
android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./~!@#$%^*()_+}{:?&<>"'"
这样就不会输入中文了。
七、获取屏幕宽高
- <span style="font-size: 16px;">DisplayMetrics displayMetrics =new DisplayMetrics();
- this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
- int height = displayMetrics.heightPixels;
- int width = displayMetrics.widthPixels;
- </span>
DisplayMetrics displayMetrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
八、将TabWidget显示在屏幕下方
- <span style="font-size: 16px;">设置TabWidget的属性 android:layout_alignParentBottom="true"</span>
设置TabWidget的属性 android:layout_alignParentBottom="true"
为了让tabHost显示在下方,要将RadioGroup的layout_gravity设置为bottom,再将FrameLayout的 layout_weight设置为1,这样就可以将RadioGroup撑到最下方。style="@style/main_tab_bottom"里面定义了样式文件
九、获取线程ID和线程名称:
- <span style="font-size: 16px;">Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName());
- </span>
Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName());
十、android中调用其它android应用
- <span style="font-size: 16px;">ComponentName comp =new ComponentName("com.Test","com.login.Main");
- intent = new Intent();
- intent.setComponent(comp);
- intent.setAction("android.intent.action.VIEW");
- startActivity(intent);
- </span>
ComponentName comp = new ComponentName("com.Test","com.login.Main"); intent = new Intent(); intent.setComponent(comp); intent.setAction("android.intent.action.VIEW"); startActivity(intent);
十一、禁止软键盘弹出
EditText有焦点(focusable为true)阻止输入法弹出 editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘当EidtText无焦点(focusable=false)时阻止输入法弹出
- <span style="font-size: 16px;">
- InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
- </span>
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
【Android】EditText标签调用键盘
在xml文件中EditText标签有一个属性android:editable="false"和android:numeric="integer"
android:numeric="integer"表示只允许输入数字,此属性可以限制用户只能输入数字内容。
android:editable表示是否可以输入内容TRUE表示可以输入,false表示不允许输入内容;
当为android:editable="false"时,点击输入框,虚拟键盘是显示不出来的,不过当设置了 android:editable=""属性时,不管是false还是true,在其后加入android:numeric="integer"属性时,是可以输入数字内容了;这里没搞明白是怎么回事,也许是numeric把前面的属性覆盖掉了。
当android:editable="false"时,在java类里如果再规定EditText.setEnabled(true)时,虚拟键盘还是不会显示的。
十二、模拟器的各种规格与分辨率对照:
- 单位:像素
- WVGA854: 854*480
- WVGA800: 800*480
- HVGA: 480*320
- QVGA: 320*240
- WQVGA432:432*240
- WQVGA400:400*240
单位:像素
WVGA854: 854*480
WVGA800: 800*480
HVGA: 480*320
QVGA: 320*240
WQVGA432:432*240
WQVGA400:400*240
十三、调用Android其他Context的Activity
- Context c = createPackageContext("chroya.demo", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
- //载入这个类
- Class clazz = c.getClassLoader().loadClass("chroya.demo.Main");
- //新建一个实例
- Object owner = clazz.newInstance();
- //获取print方法,传入参数并执行
- Object obj = clazz.getMethod("print", String.class).invoke(owner,"Hello");
Context c = createPackageContext("chroya.demo", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
//载入这个类
Class clazz = c.getClassLoader().loadClass("chroya.demo.Main");
//新建一个实例
Object owner = clazz.newInstance();
//获取print方法,传入参数并执行
Object obj = clazz.getMethod("print", String.class).invoke(owner, "Hello");
这个方法有两个参数:
1、packageName 包名,要得到Context的包名
2、 flags 标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。 CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思 是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。
十四、android4.0Dialog风格小技巧
4.0上如果还用Theme.Dialog,只能说很土,跟整体UI风格差别很大
请使用android:theme="@android:style/Theme.Holo.DialogWhenLarge"
十五、程序中安装apk
- Intent intent = new Intent();
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setAction(android.content.Intent.ACTION_VIEW);
- intent.setDataAndType(Uri.fromFile(“APK”),"application/vnd.android.package-archive");
- startActivity(intent);
Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(“APK”),"application/vnd.android.package-archive");startActivity(intent);
其中“apk”为你要安装的那个文件。
十六、获取设备型号、SDK版本及系统版本
- String device_model = Build.MODEL; // 设备型号
- String version_sdk = Build.VERSION.SDK; // 设备SDK版本
- String version_release = Build.VERSION.RELEASE; // 设备的系统版本
String device_model = Build.MODEL; // 设备型号
String version_sdk = Build.VERSION.SDK; // 设备SDK版本
String version_release = Build.VERSION.RELEASE; // 设备的系统版本
十七、图片分析功能
- public void SharePhoto(String photoUri,final Activity activity) {
- Intent shareIntent = new Intent(Intent.ACTION_SEND);
- File file = new File(photoUri);
- shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
- shareIntent.setType("image/jpeg");
- StartActivity(Intent.createChooser(shareIntent, activity.getTitle()));
- }
public void SharePhoto(String photoUri,final Activity activity) { Intent shareIntent = new Intent(Intent.ACTION_SEND); File file = new File(photoUri); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); shareIntent.setType("image/jpeg"); StartActivity(Intent.createChooser(shareIntent, activity.getTitle()));
}
十八、linux关机命令
在Windows下,按着电源键4秒强制关机,在Linux下强烈不建议这么做。Windows由于是单用户、“假多”任务的情况,所以即使你的计算机关机,也不会对别人造成影响。不过在Linux中,由于每个程序都是在后台执行的,因此,在你看不到的屏幕背后可能有很多人同时在你的主机上工作。而且,若不正常关机可能会造成文件系统的损毁。所以,正常情况下,要关机时需要注意下面几件事情:
(1)查看系统的使用状态。
要看目前有谁在线,可以用who命令。要看网络的联机状态,可以用netstat-a命令。要看后台执行那个的程序可以执行ps-aux命令。
(2)通知在线用户的关机时刻
这个时候可以使用shutdown命令
- Shutdown命令:
- 语法:shutdown[-t秒][-arkhncfF]时间 警告消息
- -t:后面加描述表示过几秒之后关机。
- -k:不是真的关机,仅仅发出警告消息。
- -r:将系统服务停掉之后重启。
- -h:将系统服务停掉之后立即关机。
- -f:关机并开机之后,强制跳过fsck的磁盘检查。
- -F:系统重启之后,强制进行fsck的磁盘检查。
- -c:取消已经进行的shutdown命令内容。
- 另外,重启关机命令有reboot、halt、poweroff。其实在默认情况下,都完成一样的工作。
- halt先调用shutdown,而shutdown最后调用halt。不过,shutdown可以根据目前已经启动的服务来逐次关闭服务后才关机;而halt能够在不理会目前系统情况下,进行硬件关机的特殊功能。
- 除了这些,还有一个关机命令是init 0
- init是切换执行等级的命令。Linux共有7种执行等级,比较重要的是下面4种等级:
- run level 0:关机
- run level 3:纯命令行模式
- run level 5:含有图形界面模式
- run level 6:重启
Shutdown命令:
语法:shutdown[-t秒][-arkhncfF]时间 警告消息
-t:后面加描述表示过几秒之后关机。
-k:不是真的关机,仅仅发出警告消息。
-r:将系统服务停掉之后重启。
-h:将系统服务停掉之后立即关机。
-f:关机并开机之后,强制跳过fsck的磁盘检查。
-F:系统重启之后,强制进行fsck的磁盘检查。
-c:取消已经进行的shutdown命令内容。另外,重启关机命令有reboot、halt、poweroff。其实在默认情况下,都完成一样的工作。
halt先调用shutdown,而shutdown最后调用halt。不过,shutdown可以根据目前已经启动的服务来逐次关闭服务后才关机;而halt能够在不理会目前系统情况下,进行硬件关机的特殊功能。除了这些,还有一个关机命令是init 0
init是切换执行等级的命令。Linux共有7种执行等级,比较重要的是下面4种等级:
run level 0:关机
run level 3:纯命令行模式
run level 5:含有图形界面模式
run level 6:重启
十九、让自己的应用不被kill掉
- public void forceStopPackage(final String packageName) {
- if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)
- != PackageManager.PERMISSION_GRANTED) {
- String msg = "Permission Denial: forceStopPackage() from pid="
- + Binder.getCallingPid()
- + ", uid=" + Binder.getCallingUid()
- + " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES;
- Slog.w(TAG, msg);
- throw new SecurityException(msg);
- }
- long callingId = Binder.clearCallingIdentity();
- try {
- IPackageManager pm = ActivityThread.getPackageManager();
- int pkgUid = -1;
- synchronized(this) {
- try {
- pkgUid = pm.getPackageUid(packageName);
- } catch (RemoteException e) {
- }
- if (pkgUid == -1) {
- Slog.w(TAG, "Invalid packageName: " + packageName);
- return;
- }
- //begin:加入一个判断条件
- if (packageName.equals("你的进程名")) {
- return;
- }
- //end: 加入一个判断条件 forceStopPackageLocked(packageName, pkgUid);
- }
- } finally {
- Binder.restoreCallingIdentity(callingId);
- }
- }
public void forceStopPackage(final String packageName) {if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)!= PackageManager.PERMISSION_GRANTED) {String msg = "Permission Denial: forceStopPackage() from pid="+ Binder.getCallingPid()+ ", uid=" + Binder.getCallingUid()+ " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES;Slog.w(TAG, msg);throw new SecurityException(msg);} long callingId = Binder.clearCallingIdentity();try {IPackageManager pm = ActivityThread.getPackageManager();int pkgUid = -1;synchronized(this) {try {pkgUid = pm.getPackageUid(packageName);} catch (RemoteException e) {}if (pkgUid == -1) {Slog.w(TAG, "Invalid packageName: " + packageName);return;}//begin:加入一个判断条件if (packageName.equals("你的进程名")) {return;}//end: 加入一个判断条件 forceStopPackageLocked(packageName, pkgUid);}} finally {Binder.restoreCallingIdentity(callingId);}}
这样的话在任务管理器里可以保证KISS不掉的;
还有在这个方法上还有个方法clearApplicationUserData中保证如果是该进程就不让调用forceStopPackage()方法。
1,首先在你的service的onDestory方法里面写上启动你自己的代码,为什么要写这个?因为如果用户是在设置->应用程序->正在运行服务这里面杀掉你service的话会调用到onDestory方法的,这里就可以启动了,2:监听屏幕关闭广播,屏幕已关闭,就启动服务。3:监听屏幕解锁广播,一样的道理,这样,基本上,你的service就达到永不停止了。对用户来说有点变态,但很多软件都这样。
二十、EditText获取焦点:
- EditText.requestFoucus()
EditText.requestFoucus()
Android有用代码(一)相关推荐
- Android有用代码(二)
文章转自:http://blog.csdn.net/aomandeshangxiao/article/details/7286354 记得2011年的时候,整理了android有用代码片段这篇文章,后 ...
- 转 android有用代码片段
原地址:http://blog.csdn.net/lilu_leo/article/details/7006211#t4 转载于:https://www.cnblogs.com/smilefortod ...
- Android实用代码(不定期更新)
Android实用代码七段(一) 一抹火焰 整理(不定期更新) 前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明: 欢迎转载,但请保留文章原始出处:) 博客园 ...
- Android Studio 代码混淆(你真的会混淆吗)
一.前言 今天要打包新产品,突然忘了混淆的参数是怎么写的了,虽然之前也混淆过,可是具体配置的参数代码有些记不起来了,因此决定花点时间写篇博客记录一下,方便以后查找和自己的记忆. 二.Android S ...
- android实用代码
Android实用代码七段(一) 前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnbl ...
- Android静态代码扫描效率优化与实践
背景与问题 DevOps实践中,我们在CI(Continuous Integration)持续集成过程主要包含了代码提交.静态检测.单元测试.编译打包环节.其中静态代码检测可以在编码规范,代码缺陷,性 ...
- android studio光标变成黑块,解决Android Studio 代码无提示无颜色区分问题
解决Android Studio 代码无提示无颜色区分问题 一.问题 ①java代码没有颜色区分,统一黑色 ②代码不会联想提示,原来打前几个字母便会联想到后面的内容 二.解决 打开File,将Powe ...
- 实用android 代码,Android 实用代码七段(一)
前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http ...
- android 实用代码
android 实用代码 1. 精确获取屏幕尺寸(例如:3.5.4.0.5.0寸屏幕) public static double getScreenPhysicalSize(Activity ctx) ...
最新文章
- 汇编语言(王爽 第三版)检测点9.1 解决-a无法输入jmp dword ptr es:[1000h]
- 欧几里得最大公约数算法
- LeetCode 215 Kth Largest Element in an Array
- 剑指offer 数值的整次方
- CSS Variables
- java网络篇-tcp的握手和挥手!
- 创建mysql windows服务_MySQL的安装及创建(windows下操作)
- 关于Mathematica 的cdf 文件的嵌入应用
- mysql 多表联合查询怎么一行显示_使用 explain 优化你的 mysql 性能
- JVM初学之类的加载过程
- 人工智能专业就业有哪些岗位方向
- 基于python-scrapy框架的爬虫系统
- IDEA项目打包几种方式
- python怎么改路径_python更改路径
- pthread_detach
- < abbr >标签 缩写
- 含有中文的图片正常显示(微信小程序)
- nginx 每秒万级并发优化
- 江西余干:端午龙舟赛引冲突 官方否认有人被打死
- 蓝桥杯官网python组基础练习-基础1-5
热门文章
- 【微信小程序】黑马优购--05商品详情
- Easy Excel 使用总结
- HTML广告位出售单页网页模板源码分享
- Python开HTTP服务器
- html 全景图three,室内房间全景图(基于three.js)
- OpenCV图像处理--设置和获取摄像头参数
- php的表达爱意的一句代码,一句表达爱意的古词 最能表达爱的一句话
- 数据库like和rlike区别
- 开源项目推荐:我个人中意的Python/C++/.Net数学库(★精品收藏★)
- HBase的高表和宽表