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

一、  获取系统版本号:

1 PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
2 int versionCode=nfo.versionCode
3 string versionName=info.versionNam

二、获取系统信息:

01 <span>String archiveFilePath="sdcard/download/Law.apk";//安装包路径
02 PackageManager pm = getPackageManager();
03 PackageInfo info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);
04 if(info != null){
05 ApplicationInfo appInfo = info.applicationInfo;
06 String appName = pm.getApplicationLabel(appInfo).toString();
07 String packageName = appInfo.packageName; //得到安装包名称
08 String version=info.versionName; //得到版本信息
09 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>

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

1 <span>(1)android中获取当前程序路径
2 getApplicationContext().getFilesDir().getAbsolutePath()
3 (2)android取已安装的程序列表
4 List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);</span>

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

01 <span>PackageManager pManager = MessageSendActivity.this.getPackageManager();
02 List<PackageInfo> appList = Utils.getAllApps(MessageSendActivity.this);
03      for(int i=0;i<appList.size();i++) {
04          PackageInfo pinfo = appList.get(i);
05          ShareItemInfo shareItem = new ShareItemInfo();
06          //set Icon
07          shareItem.setIcon(pManager.getApplicationIcon(pinfo.applicationInfo));
08          //set Application Name shareItem.setLabel(pManager.getApplicationLabel(pinfo.applicationInfo).toString());
09         //set Package Name shareItem.setPackageName(pinfo.applicationInfo.packageName);
10 }</span>

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

1 <span>1. 在item试图上面添加代码: android:descendantFocusability="blocksDescendants"
2 2.在listview里 添加代码 android:focusable="true"</span>

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

1 <span>在xml文件里面</span>
1 <span>android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./~!@#$%^*()_+}{:?&<>"'"
2 这样就不会输入中文了。</span>

七、获取屏幕宽高

1 <span>DisplayMetrics displayMetrics = new DisplayMetrics();
2 this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
3 int height = displayMetrics.heightPixels;
4 int width = displayMetrics.widthPixels;</span>

八、将TabWidget显示在屏幕下方

1 <span>设置TabWidget的属性 android:layout_alignParentBottom="true"</span>

为了让tabHost显示在下方,要将RadioGroup的layout_gravity设置为bottom,再将FrameLayout的 layout_weight设置为1,这样就可以将RadioGroup撑到最下方。style="@style/main_tab_bottom"里面定义了样式文件

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

1 <span>Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName());</span>

十、android中调用其它android应用

1 <span>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);</span>

十一、禁止软键盘弹出

1 <span>EditText有焦点(focusable为true)阻止输入法弹出 editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘
2 当EidtText无焦点(focusable=false)时阻止输入法弹出
3  
4 InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
5 imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);</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)时,虚拟键盘还是不会显示的。

 
       十二、模拟器的各种规格与分辨率对照:
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
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

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版本及系统版本

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

十七、图片分析功能

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命令

01 Shutdown命令:
02 语法:shutdown[-t秒][-arkhncfF]时间 警告消息
03 -t:后面加描述表示过几秒之后关机。
04 -k:不是真的关机,仅仅发出警告消息。
05 -r:将系统服务停掉之后重启。
06 -h:将系统服务停掉之后立即关机。
07 -f:关机并开机之后,强制跳过fsck的磁盘检查。
08 -F:系统重启之后,强制进行fsck的磁盘检查。
09 -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中加一个条件:
01 public void forceStopPackage(final String packageName) {
02         if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES)
03                 != PackageManager.PERMISSION_GRANTED) {
04             String msg = "Permission Denial: forceStopPackage() from pid="
05                     + Binder.getCallingPid()
06                     ", uid=" + Binder.getCallingUid()
07                     " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES;
08             Slog.w(TAG, msg);
09             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获取焦点:
1 EditText.requestFoucus()
    二十一、获取手机屏幕分辨率
1 DisplayMetrics  dm = new DisplayMereics();
2  
3         getWindowManager().getDefaultDisplay().getMetrics(dm);
4  
5         float width = dm.widthPixels * dm.density;
6  
7         float height = dm.heightPixels * dm.density
    在这里问什么要乘以  dm.density   了,是因为通过dm.widthPixels的到的结果始终是320,不是真实的屏幕分辨率,所以要乘以dm.density得到真实的分辨率。
     二十二、在Activity里面播放背景音乐
1 public void onCreate(Bundle savedInstanceState) {
2              super.onCreate(savedInstanceState);
3              setContentView(R.layout.mainlay);
4              mediaPlayer = MediaPlayer.create(this, R.raw.mu);
5              mediaPlayer.setLooping(true);
6              mediaPlayer.start();
7  
8                    }

二十三、让程序的界面不随机器的重力感应而翻转

第一种方法,在manifast文件里面

1 <activity
2   android:screenOrientation="portrait">
3   </activity>

第二种,在代码里面

1 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

二十四、使activity全屏显示

1 requestWindowFeature(Window.FEATURE_NO_TITLE);
2         getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,     
3                 WindowManager.LayoutParams. FLAG_FULLSCREEN);

二十五、在RelativeLayout中使selector要注意点

关于selector的使用方法,可以参考http://blog.csdn.net/aomandeshangxiao/article/details/6759576这篇文章,今天,遇到在RelativeLayout中添加background为selector后没有反应的问题,寻摸了很长时间,一直没有找到原因,其实只要加上一句代码就完全可以解决:

1 <span>RelativeLayout 里面加上android:clickable="true"</span>

这样,RelativLayout就会出现在selector里面定义的效果。

二十六、显示或隐藏虚拟键盘

1 显示:
2 InputMethodManager imm = (InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE));
3 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
4  
5 隐藏:
6 InputMethodManager imm = (InputMethodManager)(getSystemService(Context.INPUT_METHOD_SERVICE));
7 imm.hideSoftInputFromWindow(m_edit.getWindowToken(), 0);

二十七、退出程序时清除通知中信息

1 NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
2 nm.cancelAll();

二十八、创建快捷方式

1 Intent intent=new Intent();
2 //设置快捷方式的图标
3 intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.img));
4 //设置快捷方法的名称
5 intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "点击启动哥的程序");            //设置点击快键图标的响应操作
1 intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,MainActivity.class));
2 //传递Intent对象给系统
3 setResult(RESULT_OK, intent);
4 finish();

二十九、获取文件中的类名:

1 String path = context.getPackageManager().getApplicationInfo(
2                                         context.getPackageName(), 0).sourceDir;
3                         DexFile dexfile = new DexFile(path);
4                         Enumeration<String> entries = dexfile.entries();
5                         while (entries.hasMoreElements()) {
6                                 String name = (String) entries.nextElement();
7                                 ......
8                         }

Android实用代码片段的更多相关文章

  1. Android 实用代码片段

    一些不常见确又很实用的代码块. 1.精确获取屏幕尺寸(例如:3.5.4.0.5.0寸屏幕) public static double getScreenPhysicalSize(Activity ct ...

  2. Android实用代码七段(五)

      前言  每次分享意味着每次都有进步,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯 ...

  3. Android实用代码七段(四)

    声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 1.发送不重复的通知(Notif ...

  4. PHP实用代码片段(三)

    1. 目录清单 使用下面的 PHP 代码片段可以在一个目录中列出所有文件和文件夹. function list_files($dir) { if(is_dir($dir)) { if($handle ...

  5. PHP实用代码片段(二)

    1. 转换 URL:从字符串变成超链接 如果你正在开发论坛,博客或者是一个常规的表单提交,很多时候都要用户访问一个网站.使用这个函数,URL 字符串就可以自动的转换为超链接. function mak ...

  6. C#程序员经常用到的10个实用代码片段 - 操作系统

    原文地址  如果你是一个C#程序员,那么本文介绍的10个C#常用代码片段一定会给你带来帮助,从底层的资源操作,到上层的UI应用,这些代码也许能给你的开发节省不少时间.以下是原文: 1 读取操作系统和C ...

  7. 回归 | js实用代码片段的封装与总结(持续更新中...)

      上一次更博还是去年10月28号了,截至今天已经有整整4个月没有更新博客了,没更新博客不是代表不学了,期间我已经用vue做了两个项目,微信小程序做了一个项目,只是毕竟找到工作了,想偷偷懒,你懂的. ...

  8. Android 实用代码七段(三)

    前言 终于又攒了一篇出来,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http: ...

  9. Android 实用代码七段(一)

    前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: htt ...

随机推荐

  1. 存储过程返回update结果集和insert主键

    update teacher set name ='111' where id in(286,289);print @@rowcount;--或select将查出,是@@rowcount,不是@row ...

  2. SpringMVC学习总结(一)--Hello World入门

    一.什么是Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 ...

  3. c#获取本地IP和MAC地址

    1>通过wmi获取 using System; using System.Management; using System.Net; public class Program { static ...

  4. python 类函数

    81定义: class 类名(object):# __init__(self, 参数列表):    # __init__叫构造函数,其作用:使用类实例对象时,自动调用_init_,起到对象进行初始化, ...

  5. 分布式理论系列(二)一致性算法:2PC 到 3PC 到 Paxos 到 Raft 到 Zab

    分布式理论系列(二)一致性算法:2PC 到 3PC 到 Paxos 到 Raft 到 Zab 本文介绍一致性算法: 2PC 到 3PC 到 Paxos 到 Raft 到 Zab 两类一致性算法(操作原 ...

  6. 阿里云专属推荐码nuyxa6

    申请成功!您的推荐码为nuyxa6 恭喜您获得阿里云专属推荐码,推荐码有效期至2017-03-04 14:43:49. 我们会在到期日前两周以站内信的方式通知您新的有效期.

  7. Tomcat8 配置APR模式

    首先说明下tomcat connector运行的3中模式及区别: 1)bio 默认的模式,同步阻塞,性能非常低下,没有经过任何优化处理和支持. 2)nio  同步非阻塞,利用java的异步io护理技术 ...

  8. wCF 问题收集页

    1.设置最大序列化集合元素个数 http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.datacontractser ...

  9. sed修改json内容

    1.config.json { "whiteHoleUrl": "http://172.16.80.90/whui/serviceManagement/regist/ne ...

  10. Hdu3549 Flow Problem 2017-02-11 16:24 58人阅读 评论(0) 收藏

    Flow Problem Problem Description Network flow is a well-known difficult problem for ACMers. Given a ...