android有用代码片段(1)
16lz
2021-01-23
android有用代码片段
分类:Android及相关 2011-11-23 23:20 1674人阅读 评论(0) 收藏 举报有时候,需要一些小的功能,找到以后,就把它贴到了博客下面,作为留言,查找起来很不方便,所以就整理一下,方便自己和他人。
一、 获取系统版本号:
- PackageInfoinfo=this.getPackageManager().getPackageInfo(this.getPackageName(),0);
- intversionCode=nfo.versionCode
- stringversionName=info.versionNam
二、获取系统信息:
[java] view plain copy
- <spanstyle="font-size:16px;">StringarchiveFilePath="sdcard/download/Law.apk";//安装包路径
- PackageManagerpm=getPackageManager();
- PackageInfoinfo=pm.getPackageArchiveInfo(archiveFilePath,PackageManager.GET_ACTIVITIES);
- if(info!=null){
- ApplicationInfoappInfo=info.applicationInfo;
- StringappName=pm.getApplicationLabel(appInfo).toString();
- StringpackageName=appInfo.packageName;//得到安装包名称
- Stringversion=info.versionName;//得到版本信息
- Toast.makeText(test4.this,"packageName:"+packageName+";version:"+version,Toast.LENGTH_LONG).show();
- Drawableicon=pm.getApplicationIcon(appInfo);//得到图标信息
- TextViewtv=(TextView)findViewById(R.id.tv);//显示图标
- tv.setBackgroundDrawable(icon);</span>
三、获取安装路径和已安装程序列表
[java] view plain copy
- <spanstyle="font-size:16px;">(1)android中获取当前程序路径
- getApplicationContext().getFilesDir().getAbsolutePath()
- (2)android取已安装的程序列表
- List<PackageInfo>packageInfoList=getPackageManager().getInstalledPackages(0);</span>
四、获取图片、应用名、包名
[java] view plain copy
- <spanstyle="font-size:16px;">PackageManagerpManager=MessageSendActivity.this.getPackageManager();
- List<PackageInfo>appList=Utils.getAllApps(MessageSendActivity.this);
- for(inti=0;i<appList.size();i++){
- PackageInfopinfo=appList.get(i);
- ShareItemInfoshareItem=newShareItemInfo();
- //setIcon
- shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
- //setApplicationNameshareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
- //setPackageNameshareItem.setPackageName(pinfo.applicationInfo.packageName);
- }</span>
[java] view plain copy
- <spanstyle="font-size:16px;">1.在item试图上面添加代码:android:descendantFocusability="blocksDescendants"
- 2.在listview里添加代码android:focusable="true"</span>
[html] view plain copy
- <spanstyle="font-size:16px;">在xml文件里面</span>
- <spanstyle="font-size:16px;">android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./[email protected]#$%^*()_+}{:?&<>"'"
- 这样就不会输入中文了。
- </span>
七、获取屏幕宽高
[java] view plain copy
- <spanstyle="font-size:16px;">DisplayMetricsdisplayMetrics=newDisplayMetrics();
- this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
- intheight=displayMetrics.heightPixels;
- intwidth=displayMetrics.widthPixels;
- </span>
[java] view plain copy
- <spanstyle="font-size:16px;">设置TabWidget的属性android:layout_alignParentBottom="true"</span>
九、获取线程ID和线程名称:
[java] view plain copy
- <spanstyle="font-size:16px;">Log.v("@@@@@@@@@@",Thread.currentThread().getId()+""+Thread.currentThread().getName());
- </span>
十、android中调用其它android应用
[java] view plain copy
- <spanstyle="font-size:16px;">ComponentNamecomp=newComponentName("com.Test","com.login.Main");
- intent=newIntent();
- intent.setComponent(comp);
- intent.setAction("android.intent.action.VIEW");
- startActivity(intent);
- </span>
[java] view plain copy
- <spanstyle="font-size:16px;">EditText有焦点(focusable为true)阻止输入法弹出editText.setInputType(InputType.TYPE_NULL);//关闭软键盘
- 当EidtText无焦点(focusable=false)时阻止输入法弹出
- InputMethodManagerimm=(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(editText.getWindowToken(),0);
- </span>
在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)时,虚拟键盘还是不会显示的。
十二、模拟器的各种规格与分辨率对照: [html] view plain copy
- 单位:像素
- WVGA854:854*480
- WVGA800:800*480
- HVGA:480*320
- QVGA:320*240
- WQVGA432:432*240
- WQVGA400:400*240
- Contextc=createPackageContext("chroya.demo",Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);
- //载入这个类
- Classclazz=c.getClassLoader().loadClass("chroya.demo.Main");
- //新建一个实例
- Objectowner=clazz.newInstance();
- //获取print方法,传入参数并执行
- Objectobj=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 [java] view plain copy
- Intentintent=newIntent();
- 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版本及系统版本
[java] view plain copy
- Stringdevice_model=Build.MODEL;//设备型号
- Stringversion_sdk=Build.VERSION.SDK;//设备SDK版本
- Stringversion_release=Build.VERSION.RELEASE;//设备的系统版本
十七、图片分析功能
[java] view plain copy
- publicvoidSharePhoto(StringphotoUri,finalActivityactivity){
- IntentshareIntent=newIntent(Intent.ACTION_SEND);
- Filefile=newFile(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命令
[java] view plain copy
- Shutdown命令:
- 语法:shutdown[-t秒][-arkhncfF]时间警告消息
- -t:后面加描述表示过几秒之后关机。
- -k:不是真的关机,仅仅发出警告消息。
- -r:将系统服务停掉之后重启。
- -h:将系统服务停掉之后立即关机。
- -f:关机并开机之后,强制跳过fsck的磁盘检查。
- -F:系统重启之后,强制进行fsck的磁盘检查。
- -c:取消已经进行的shutdown命令内容。
- 另外,重启关机命令有reboot、halt、poweroff。其实在默认情况下,都完成一样的工作。
- halt先调用shutdown,而shutdown最后调用halt。不过,shutdown可以根据目前已经启动的服务来逐次关闭服务后才关机;而halt能够在不理会目前系统情况下,进行硬件关机的特殊功能。
- 除了这些,还有一个关机命令是init0
- init是切换执行等级的命令。Linux共有7种执行等级,比较重要的是下面4种等级:
- runlevel0:关机
- runlevel3:纯命令行模式
- runlevel5:含有图形界面模式
- runlevel6:重启
十九、让自己的应用不被kill掉 可以在frameworks\base\services\java\com\android\server\am\ActivityManagerService.java这个类的forceStopPackage中加一个条件: [java] view plain copy
- publicvoidforceStopPackage(finalStringpackageName){
- if(checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)
- !=PackageManager.PERMISSION_GRANTED){
- Stringmsg="PermissionDenial:forceStopPackage()frompid="
- +Binder.getCallingPid()
- +",uid="+Binder.getCallingUid()
- +"requires"+android.Manifest.permission.FORCE_STOP_PACKAGES;
- Slog.w(TAG,msg);
- thrownewSecurityException(msg);
- }
- longcallingId=Binder.clearCallingIdentity();
- try{
- IPackageManagerpm=ActivityThread.getPackageManager();
- intpkgUid=-1;
- synchronized(this){
- try{
- pkgUid=pm.getPackageUid(packageName);
- }catch(RemoteExceptione){
- }
- if(pkgUid==-1){
- Slog.w(TAG,"InvalidpackageName:"+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获取焦点: [java] view plain copy
- EditText.requestFoucus()
以上部分代码是从别人博客摘抄而来,没有指明出处抱歉。
更多相关文章
- 《第一行代码--Android》学习笔记--第一章:开始起航:思路
- android视频截屏&手机录屏实现代码
- Android混淆代码
- android基础命令
- Android热修复原理(一)热修复框架对比和代码修复
- 如何在Android上编写高效的Java代码
- Android冷启动实现app秒开的实现代码
- Android基于多触控的图片缩放和拖动代码实现