android有用代码片段一

[+]
  1. 一 获取系统版本号
  2. 二获取系统信息
  3. 三获取安装路径和已安装程序列表
  4. 四获取图片应用名包名
  5. 五解决listview上 Item上有按钮时 item本身不能点击的问题
  6. 六不让文本框输入中文
  7. 七获取屏幕宽高
  8. 八将TabWidget显示在屏幕下方
  9. 九获取线程ID和线程名称
  10. 十android中调用其它android应用
  11. 十一禁止软键盘弹出
  12. 十二模拟器的各种规格与分辨率对照
  13. 十三调用Android其他Context的Activity
  14. 十四android40Dialog风格小技巧
  15. 十五程序中安装apk
  16. 十六获取设备型号SDK版本及系统版本
  17. 十七图片分析功能
  18. 十八linux关机命令
  19. 十九让自己的应用不被kill掉
  20. 二十EditText获取焦点


转自:http://blog.csdn.net/aomandeshangxiao/article/details/7006211

     有时候,需要一些小的功能,找到以后,就把它贴到了博客下面,作为留言,查找起来很不方便,所以就整理一下,方便自己和他人。

         一、  获取系统版本号:

[java]  view plain copy
  1. PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);  
  2. int versionCode=nfo.versionCode  
  3. string versionName=info.versionNam  

       二、获取系统信息:

[java]  view plain copy
  1. <span style="font-size:16px;">String archiveFilePath="sdcard/download/Law.apk";//安装包路径  
  2. PackageManager pm = getPackageManager();   
  3. PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);   
  4. if(info != null){   
  5. ApplicationInfo appInfo = info.applicationInfo;   
  6. String appName = pm.getApplicationLabel(appInfo).toString();   
  7. String packageName = appInfo.packageName; //得到安装包名称  
  8. String version=info.versionName; //得到版本信息   
  9. Toast.makeText(test4.this"packageName:"+packageName+";version:"+version, Toast.LENGTH_LONG).show();  
  10. Drawable icon = pm.getApplicationIcon(appInfo);//得到图标信息  
  11. TextView tv = (TextView)findViewById(R.id.tv); //显示图标  
  12. tv.setBackgroundDrawable(icon);</span>  

        三、获取安装路径和已安装程序列表

[java]  view plain copy
  1. <span style="font-size:16px;">(1)android中获取当前程序路径  
  2. getApplicationContext().getFilesDir().getAbsolutePath()  
  3. (2)android取已安装的程序列表  
  4. List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);</span>  

       四、获取图片、应用名、包名

[java]  view plain copy
  1. <span style="font-size:16px;">PackageManager pManager = MessageSendActivity.this.getPackageManager();   
  2. List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this);   
  3.      for(int i=0;i<appList.size();i++) {   
  4.          PackageInfo pinfo = appList.get(i);   
  5.          ShareItemInfo shareItem = new ShareItemInfo();   
  6.          //set Icon   
  7.          shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));   
  8.          //set Application Name shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());   
  9.         //set Package Name shareItem.setPackageName(pinfo.applicationInfo.packageName);   
  10. }</span>  

         五、解决listview上 Item上有按钮时 item本身不能点击的问题:

[java]  view plain copy
  1. <span style="font-size:16px;">1. 在item试图上面添加代码: android:descendantFocusability="blocksDescendants"  
  2. 2.在listview里 添加代码 android:focusable="true"</span>  

         六、不让文本框输入中文:

在xml文件里面

[html]  view plain copy
  1. <span style="font-size: 16px; ">android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./~!@#$%^*()_+}{:?&<>"'"  
  2. 这样就不会输入中文了。  
  3. </span>  
        

         七、获取屏幕宽高

[java]  view plain copy
  1. <span style="font-size:16px;">DisplayMetrics displayMetrics = new DisplayMetrics();   
  2. this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);   
  3. int height = displayMetrics.heightPixels;   
  4. int width = displayMetrics.widthPixels;  
  5. </span>  

         八、将TabWidget显示在屏幕下方

[java]  view plain copy
  1. <span style="font-size:16px;">设置TabWidget的属性 android:layout_alignParentBottom="true"</span>  
为了让tabHost显示在下方,要将RadioGroup的layout_gravity设置为bottom,再将FrameLayout的 layout_weight设置为1,这样就可以将RadioGroup撑到最下方。style="@style/main_tab_bottom"里面定义了样式文件      

         九、获取线程ID和线程名称:

[java]  view plain copy
  1. <span style="font-size:16px;">Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName());  
  2. </span>  

        十、android中调用其它android应用

[java]  view plain copy
  1. <span style="font-size:16px;">ComponentName comp = new ComponentName("com.Test","com.login.Main");   
  2.  intent = new Intent();   
  3.  intent.setComponent(comp);   
  4.  intent.setAction("android.intent.action.VIEW");   
  5.  startActivity(intent);  
  6. </span>  

         十一、禁止软键盘弹出

EditText有焦点(focusable为true)阻止输入法弹出 editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘 当EidtText无焦点(focusable=false)时阻止输入法弹出 

[java]  view plain copy
  1. <span style="font-size: 16px; ">  
  2. InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);   
  3. imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);  
  4. </span>  
【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)时,虚拟键盘还是不会显示的。

       十二、模拟器的各种规格与分辨率对照:

[html]  view plain copy
  1. 单位:像素   
  2. WVGA854: 854*480  
  3. WVGA800: 800*480  
  4. HVGA: 480*320   
  5. QVGA: 320*240  
  6. WQVGA432:432*240   
  7. WQVGA400:400*240   
    

     十三、调用Android其他Context的Activity

[java]  view plain copy
  1. Context c = createPackageContext("chroya.demo", Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);  
  2. //载入这个类  
  3. Class clazz = c.getClassLoader().loadClass("chroya.demo.Main");  
  4. //新建一个实例  
  5. Object owner = clazz.newInstance();  
  6. //获取print方法,传入参数并执行  
  7. 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

     
[java]  view plain copy
  1. Intent intent = new Intent();             
  2.        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  3.     intent.setAction(android.content.Intent.ACTION_VIEW);  
  4.     intent.setDataAndType(Uri.fromFile(“APK”),"application/vnd.android.package-archive");  
  5.     startActivity(intent);  

其中“apk”为你要安装的那个文件。

         十六、获取设备型号、SDK版本及系统版本

[java]  view plain copy
  1. String device_model = Build.MODEL; // 设备型号    
  2. String version_sdk = Build.VERSION.SDK; // 设备SDK版本    
  3. String version_release = Build.VERSION.RELEASE; // 设备的系统版本    

       十七、图片分析功能

[java]  view plain copy
  1. public void SharePhoto(String photoUri,final Activity activity) {    
  2.     Intent shareIntent = new Intent(Intent.ACTION_SEND);    
  3.     File file = new File(photoUri);    
  4.     shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));    
  5.     shareIntent.setType("image/jpeg");    
  6.     StartActivity(Intent.createChooser(shareIntent, activity.getTitle()));    
  7. }    

         十八、linux关机命令

在Windows下,按着电源键4秒强制关机,在Linux下强烈不建议这么做。Windows由于是单用户、“假多”任务的情况,所以即使你的计算机关机,也不会对别人造成影响。不过在Linux中,由于每个程序都是在后台执行的,因此,在你看不到的屏幕背后可能有很多人同时在你的主机上工作。而且,若不正常关机可能会造成文件系统的损毁。所以,正常情况下,要关机时需要注意下面几件事情:

(1)查看系统的使用状态。

要看目前有谁在线,可以用who命令。要看网络的联机状态,可以用netstat-a命令。要看后台执行那个的程序可以执行ps-aux命令。

(2)通知在线用户的关机时刻

这个时候可以使用shutdown命令

[java]  view plain copy
  1. Shutdown命令:  
  2. 语法:shutdown[-t秒][-arkhncfF]时间 警告消息  
  3. -t:后面加描述表示过几秒之后关机。  
  4. -k:不是真的关机,仅仅发出警告消息。  
  5. -r:将系统服务停掉之后重启。  
  6. -h:将系统服务停掉之后立即关机。  
  7. -f:关机并开机之后,强制跳过fsck的磁盘检查。  
  8. -F:系统重启之后,强制进行fsck的磁盘检查。  
  9. -c:取消已经进行的shutdown命令内容。  
  10.   
  11. 另外,重启关机命令有reboot、halt、poweroff。其实在默认情况下,都完成一样的工作。  
  12. halt先调用shutdown,而shutdown最后调用halt。不过,shutdown可以根据目前已经启动的服务来逐次关闭服务后才关机;而halt能够在不理会目前系统情况下,进行硬件关机的特殊功能。  
  13.   
  14. 除了这些,还有一个关机命令是init 0  
  15. init是切换执行等级的命令。Linux共有7种执行等级,比较重要的是下面4种等级:  
  16. run level 0:关机  
  17. run level 3:纯命令行模式  
  18. run level 5:含有图形界面模式  
  19. run level 6:重启  

      十九、让自己的应用不被kill掉

可以在frameworks\base\services\java\com\android\server\am\ActivityManagerService.java这个类的forceStopPackage中加一个条件:
[java]  view plain copy
  1. public void forceStopPackage(final String packageName) {  
  2.         if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)  
  3.                 != PackageManager.PERMISSION_GRANTED) {  
  4.             String msg = "Permission Denial: forceStopPackage() from pid="  
  5.                     + Binder.getCallingPid()  
  6.                     + ", uid=" + Binder.getCallingUid()  
  7.                     + " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES;  
  8.             Slog.w(TAG, msg);  
  9.             throw new SecurityException(msg);  
  10.         }          
  11.         long callingId = Binder.clearCallingIdentity();  
  12.         try {  
  13.             IPackageManager pm = ActivityThread.getPackageManager();  
  14.             int pkgUid = -1;  
  15.             synchronized(this) {  
  16.                 try {  
  17.                     pkgUid = pm.getPackageUid(packageName);  
  18.                 } catch (RemoteException e) {  
  19.                 }  
  20.                 if (pkgUid == -1) {  
  21.                     Slog.w(TAG, "Invalid packageName: " + packageName);  
  22.                     return;  
  23.                 }  
  24.                 //begin:加入一个判断条件  
  25.                 if (packageName.equals("你的进程名")) {  
  26.                     return;  
  27.                 }  
  28.                 //end: 加入一个判断条件                                forceStopPackageLocked(packageName, pkgUid);  
  29.             }  
  30.         } finally {  
  31.             Binder.restoreCallingIdentity(callingId);  
  32.         }  
  33.     }  

这样的话在任务管理器里可以保证KISS不掉的;
还有在这个方法上还有个方法clearApplicationUserData中保证如果是该进程就不让调用forceStopPackage()方法。
另:其他方法:
1,首先在你的service的onDestory方法里面写上启动你自己的代码,为什么要写这个?因为如果用户是在设置->应用程序->正在运行服务这里面杀掉你service的话会调用到onDestory方法的,这里就可以启动了,
2:监听屏幕关闭广播,屏幕已关闭,就启动服务。
3:监听屏幕解锁广播,一样的道理,这样,基本上,你的service就达到永不停止了。对用户来说有点变态,但很多软件都这样。

     二十、EditText获取焦点

[java]  view plain copy
  1. EditText.requestFoucus()  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值