2019独角兽企业重金招聘Python工程师标准>>>

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

一、 获取系统版本号:

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

PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0); int versionCode=nfo.versionCode string versionName=info.versionNam
二、获取系统信息:

[java] view plain copy print ?
  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>

<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>
三、获取安装路径和已安装程序列表

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

<span style="font-size:16px;">(1)android中获取当前程序路径 getApplicationContext().getFilesDir().getAbsolutePath() (2)android取已安装的程序列表 List<PackageInfo> packageInfoList = getPackageManager().getInstalledPackages(0);</span>
四、获取图片、应用名、包名

[java] view plain copy print ?
  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>

<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> 五、解决listview上 Item上有按钮时 item本身不能点击的问题:

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

<span style="font-size:16px;">1. 在item试图上面添加代码: android:descendantFocusability="blocksDescendants" 2.在listview里 添加代码 android:focusable="true"</span> 六、不让文本框输入中文:

[html] view plain copy print ?
  1. <span style="font-size:16px;">在xml文件里面</span>

<span style="font-size:16px;">在xml文件里面</span>

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

<span style="font-size:16px;">android:digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./~!@#$%^*()_+}{:?&<>"'" 这样就不会输入中文了。 </span>
七、获取屏幕宽高

[java] view plain copy print ?
  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>

<span style="font-size:16px;">DisplayMetrics displayMetrics = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int height = displayMetrics.heightPixels; int width = displayMetrics.widthPixels; </span> 八、将TabWidget显示在屏幕下方

[java] view plain copy print ?
  1. <span style="font-size:16px;">设置TabWidget的属性 android:layout_alignParentBottom="true"</span>

<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 print ?
  1. <span style="font-size:16px;">Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName());
  2. </span>

<span style="font-size:16px;">Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName()); </span>
十、android中调用其它android应用

[java] view plain copy print ?
  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>

<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> 十一、禁止软键盘弹出

[java] view plain copy print ?
  1. <span style="font-size:16px;">EditText有焦点(focusable为true)阻止输入法弹出 editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘
  2. 当EidtText无焦点(focusable=false)时阻止输入法弹出
  3. InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
  4. imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
  5. </span>

<span style="font-size:16px;">EditText有焦点(focusable为true)阻止输入法弹出 editText.setInputType(InputType.TYPE_NULL); // 关闭软键盘 当EidtText无焦点(focusable=false)时阻止输入法弹出 InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); 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)时,虚拟键盘还是不会显示的。

十二、模拟器的各种规格与分辨率对照:
[html] view plain copy print ?
  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

单位:像素 WVGA854: 854*480 WVGA800: 800*480 HVGA: 480*320 QVGA: 320*240 WQVGA432:432*240 WQVGA400:400*240

十三、调用Android其他Context的Activity
[java] view plain copy print ?
  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");

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
[java] view plain copy print ?
  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);

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

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

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

十七、图片分析功能

[java] view plain copy print ?
  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. }

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

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

可以在frameworks\base\services\java\com\android\server\am\ActivityManagerService.java这个类的forceStopPackage中加一个条件:
[java] view plain copy print ?
  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. }

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获取焦点:
[java] view plain copy print ?
  1. EditText.requestFoucus()

EditText.requestFoucus()

由于收集内容较多,所以决定每20条分为一篇文章。如有不便,敬请谅解!
查看其他部分:
Android有用代码片段(二)

以上部分代码是从别人博客摘抄而来,没有指明出处抱歉。

转载于:https://my.oschina.net/curitis/blog/57908

android有用代码片段 (一)相关推荐

  1. 转 android有用代码片段

    原地址:http://blog.csdn.net/lilu_leo/article/details/7006211#t4 转载于:https://www.cnblogs.com/smilefortod ...

  2. Android有用代码(二)

    文章转自:http://blog.csdn.net/aomandeshangxiao/article/details/7286354 记得2011年的时候,整理了android有用代码片段这篇文章,后 ...

  3. Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段

    收藏ArrayAdapter.SimpleAdapter和BaseAdapter的一些简短代码片段,希望用时方便想起其用法. 1.ArrayAdapter 只可以简单的显示一行文本 代码片段: Arr ...

  4. android部分代码片段(例:判断设备为手机,获取mac地址,软键盘,唤醒屏幕等)

    部分代码片段: 1.唤醒屏幕并解锁 public static void wakeUpAndUnlock(Context context){ KeyguardManager km= (Keyguard ...

  5. iPhone3开发基础教程中部分有用代码片段(1)

    <beginning iphone3 development exploring the iphone SDK>一书中有很多基础的代码片段 ,由这些最原始的代码片段组成了我们的复杂的iph ...

  6. Android有用代码(一)

    文章转自: http://blog.csdn.net/aomandeshangxiao/article/details/7006211 有时候,需要一些小的功能,找到以后,就把它贴到了博客下面,作为留 ...

  7. Android常用代码片段(笔记一)

    1.自定义广播 接受网络状态 public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Con ...

  8. 实用android 代码,Android 实用代码七段(一)

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

  9. Android课程---Android Studio使用小技巧:提取方法代码片段

    这篇文章主要介绍了Android Studio使用小技巧:提取方法代码片段,本文分享了一个快速复制粘贴方法代码片段的小技巧,并用GIF图演示,需要的朋友可以参考下 今天来给大家介绍一个非常有用的Stu ...

  10. python语言代码片段-有用的Python代码片段

    我列出的这些有用的Python代码片段,为我节省了大量的时间,并且我希望他们也能为你节省一些时间.大多数的这些片段出自寻找解决方案,查找博客和StackOverflow解决类似问题的答案.下面所有的代 ...

最新文章

  1. 清华唐杰:GPT-3表示能力已经接近人类了,但它有一个阿喀琉斯之踵
  2. 2013年中国高校网购实力排行榜
  3. hbuilder怎么做登录界面_hbuilder 第三方登录实例
  4. Flink的Table API 与SQL的流处理
  5. Python 线程障碍对象 Barrier - Python零基础入门教程
  6. Java对接西门子S7
  7. LaTeX的语法问题及写作模板汇总
  8. linux aaa认证服务器,华为设备安全之AAA认证
  9. C51单片机-蓝牙遥控小车
  10. Geometric application of BSTs
  11. 入侵sf服务器技术_入侵服务器、疯狂攻击各种网站, 这个黑客团伙终被“团灭”!...
  12. taskmgr(任务管理器)无法出来的解决办法
  13. 暴躁兔让Web3与Crypto之路不再迷茫
  14. 英语自我介绍资料及范文
  15. win10内存占用过高解决方案
  16. autocad型源代码_VB与AUTOCAD二次开发源代码包
  17. 四旋翼飞行器9——APM地面站使用详解(校准结束)
  18. VNC安装常见问题与处理
  19. 深度学习-84:自动驾驶技术(L0-L5级别)
  20. java--for循环及相关案例

热门文章

  1. html网页制作中的问题,网页制作中注意应用HTML标签的问题
  2. ufvm可以读哪些网格_高三美术生可以读的985、211大学有哪些?
  3. wince系统usb刷机工具_中兴B860AV1.2-S905L刷机救砖教程,喜欢的分享一下
  4. 力扣-1464. 数组中两元素的最大乘积
  5. 蓝桥杯2018年第九届C/C++省赛B组第二题-明码
  6. win10安装mysql报错——无法项识别为 cmdlet、函数、脚 本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
  7. L1-1 PTA使我精神焕发 (5 分)
  8. apk与android系统签名
  9. 品牌logo在EDM数据营销中的运用
  10. 什么是延展性(Malleability,可鍛性)