Android有用的代码片段.docx
- 文档编号:11537005
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:26
- 大小:71.21KB
Android有用的代码片段.docx
《Android有用的代码片段.docx》由会员分享,可在线阅读,更多相关《Android有用的代码片段.docx(26页珍藏版)》请在冰豆网上搜索。
Android有用的代码片段
Android有用的代码片段
一、 获取系统版本号:
[java] viewplaincopy
1.PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
2.int versionCode=nfo.versionCode
3.string versionName=info.versionNam
二、获取系统信息:
[java] viewplaincopy
1. 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);
三、获取安装路径和已安装程序列表
[java] viewplaincopy
1. 16px;"> (1)android中获取当前程序路径 2.getApplicationContext().getFilesDir().getAbsolutePath() 3. (2)android取已安装的程序列表 4.List
四、获取图片、应用名、包名
[java] viewplaincopy
1. 16px;">PackageManager pManager = MessageSendActivity.this.getPackageManager(); 2.List 3. for(int i=0;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.}
五、解决listview上Item上有按钮时item本身不能点击的问题:
[java] viewplaincopy
1. 16px;">1. 在item试图上面添加代码: android: descendantFocusability="blocksDescendants" 2.2.在listview里 添加代码 android: focusable="true"
六、不让文本框输入中文:
[html] viewplaincopy
1. 16px;">在xml文件里面
[html] viewplaincopy
1. 16px;">android: digits="1234567890qwertyuiopasdfghjklzxcvbnm`-=[]\;,./~! @#$%^*()_+}{: ? &<>"'" 2.这样就不会输入中文了。 3.
七、获取屏幕宽高
[java] viewplaincopy
1. 16px;">DisplayMetrics displayMetrics = new DisplayMetrics(); 2.this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 3.int height = displayMetrics.heightPixels; 4.int width = displayMetrics.widthPixels; 5.
八、将TabWidget显示在屏幕下方
[java] viewplaincopy
1. 16px;">设置TabWidget的属性 android: layout_alignParentBottom="true"
为了让tabHost显示在下方,要将RadioGroup的layout_gravity设置为bottom,再将FrameLayout的layout_weight设置为1,这样就可以将RadioGroup撑到最下方。
style="@style/main_tab_bottom"里面定义了样式文件
九、获取线程ID和线程名称:
[java] viewplaincopy
1. 16px;">Log.v("@@@@@@@@@@",Thread.currentThread().getId()+" "+Thread.currentThread().getName()); 2.
十、android中调用其它android应用
[java] viewplaincopy
1. 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.
十一、禁止软键盘弹出
[java] viewplaincopy
1. 16px;">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); 6.
【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] viewplaincopy
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] viewplaincopy
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] viewplaincopy
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] viewplaincopy
1.String device_model = Build.MODEL; // 设备型号
2.String version_sdk = Build.VERSION.SDK; // 设备SDK版本
3.String version_release = Build.VERSION.RELEASE; // 设备的系统版本
十七、图片分析功能
[java] viewplaincopy
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] viewplaincopy
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] viewplaincopy
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] viewplaincopy
1.EditText.requestFoucus()
二十一、获取手机屏幕分辨率
[java] viewplaincopy
1.DisplayMetrics dm = new DisplayMereics();
2.
3. getWindowManager().getDefaultDisplay().getMetrics(dm);
4.
5. float width = dm.widthP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 有用 代码 片段