几个项目中用到的代码片段
2016-01-30 12:17
274 查看
打印调用栈
LogUtils.e("CHENZHENG", Log.getStackTraceString(new Throwable()));
监听网络变化
1,注册监听器:
mConnectivityManager = (ConnectivityManager)context .getSystemService(Context.CONNECTIVITY_SERVICE); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); mContext.registerReceiver(this, intentFilter);
2。接收
public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (null == extras) { return; } if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkInfo(); if (networkInfo == null) { onConnectivityLost(); return; } State state = networkInfo.getState(); if (state == State.CONNECTED) { synchronized (mLock) { mLock.notifyAll(); } onConnectivityRestored(networkInfo.getType()); } else if (state == State.DISCONNECTED) { onConnectivityLost(); } } else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { NetworkInfo networkInfo = (NetworkInfo) extras.get(WifiManager.EXTRA_NETWORK_INFO); if (networkInfo == null) return; State state = networkInfo.getState(); if (state == State.CONNECTED) { for (WifiConnectedCallback callback : mListWifiConnected) { callback.call(); } } } }
检测Android 中的某个 Intent 是否有效
public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
获取所有已安装的应用
public static boolean showAllInstalledPackage(@NonNull Context context) { PackageManager pm; if ((pm = context.getApplicationContext().getPackageManager()) == null) { return false; } List<PackageInfo> packages = pm.getInstalledPackages(0); for (PackageInfo info : packages) { String name = info.packageName.toLowerCase(Locale.ENGLISH); Log.e("CHENZHENG",name); } return false; }
自定义Drawable 设置listview的divider
可以设置divider和listview不等宽<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!--divider的背景色--> <item android:drawable="@color/background_color" /> <!--divider颜色--> <item android:drawable="@color/divider_color" android:right="@dimen/click_area_padding_small" android:left="@dimen/click_area_padding_small" /> </layer-list>
HandlerThread的正确退出方法(sdk18以前只有quit)
if (mHandlerThread != null && mHandlerThread.isAlive()) { boolean findSafely = false; Class clazz = mHandlerThread.getClass(); try { Method m1 = clazz.getDeclaredMethod("quitSafely"); if(m1 != null) { findSafely = true; } } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(!findSafely) { mHandlerThread.quit(); } else { mHandlerThread.quitSafely(); } }
ListView的点击Item时的背景色
android:listSelector="@drawable/conversation_unread_selector"
通过ApplyPatch批量更新数据库
public void changeSelectedItemsReadStatus() { final ArrayList<ContentProviderOperation> updateTask = new ArrayList<ContentProviderOperation>(); updateReadStatus(updateTask, false); try { mActivity.getContentResolver().applyBatch(EmailContent.AUTHORITY, updateTask); } catch (Exception e) { e.printStackTrace(); } } private void updateReadStatus(ArrayList<ContentProviderOperation> updateTask, boolean isRead) { ContentProviderOperation updateMessage; for (Long emailID : emailModel.mItems) { ContentValues emailValues = new ContentValues(); emailValues.put(EmailContent.MessageColumns.FLAG_READ, isRead ? 1 : 0); updateMessage = ContentProviderOperation.newUpdate(EmailContent.Message.CONTENT_URI).withValues(emailValues) .withSelection(EmailContent.MessageColumns.ID + "=?", new String[]{Long.toString(emailID)}) .build(); updateTask.add(updateMessage); } }
两种触发添加联系人的Intent
1,直接进入添加联系人页面
final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE); intent.putExtra(ContactsContract.Intents.Insert.EMAIL, "example@example.com"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(intent); } });
2,如果有该联系人,浏览,如果没有,弹出添加页面
Uri createUri = Uri.fromParts("mailto","13520011106@126.com", null); Uri createUri = Uri.fromParts("tel", "13520011106", null); final Intent intent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT, createUri); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(intent); } });
3,新建联系人
final Intent intent = new Intent(Intent.ACTION_INSERT); intent.setType("vnd.android.cursor.dir/person"); intent.setType("vnd.android.cursor.dir/contact"); intent.setType("vnd.android.cursor.dir/raw_contact"); intent.putExtra(ContactsContract.Intents.Insert.EMAIL, "example@example.com"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(intent); } });
4,编辑联系人
final Intent intent=new Intent(Intent.ACTION_EDIT,Uri.parse("content://com.android.contacts/contacts/"+"1")); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(intent); } });
5,使用QuickContactBadge
if (contactUri == null) { mContactBadge.assignContactFromEmail(mEmailAddress, true); } else { mContactBadge.assignContactUri(contactUri); } mContactBadge.performClick();
如何判断一个文件路径是隐藏文件
public static boolean isHidden(String path) { if (TextUtils.isEmpty(path)) { throw new IllegalArgumentException("An invalid file path"); } int fsPos = path.lastIndexOf(File.separator); if (fsPos != -1 && (fsPos != path.length() - 1)) { String name = path.substring(fsPos + 1); if (name.startsWith(".") && !name.equals(".") && !name.equals("..")) { return true; } } return false; }
相关文章推荐
- 用php 把数组中偶数,选择出来
- Java四大名著下载大全(中文+英文+源码)
- python 编码问题
- C++优先队列 合并果子
- The Java™ Tutorials — Generics :Type Erasure 类型消除
- SPL学习笔记(1)---概念
- C/C++和Java的交互详解
- 如何在Eclipse项目中使用Material Design功能
- c语言实现一个简单的通用动态数组
- eclipse搭建erlang开发环境
- Java开发中的23种设计模式详解(转)
- C#基础之转义符
- C++获得文件夹下所有文件的路径及文件名
- C++实用技巧排序算法
- Spring框架,如何返回数据给视图(jsp文件)
- spring3 mvc:方法返回值的学习
- 递归求n!
- 关于JDK8跑项目会抛出的type mismatch between read and write
- springmvc返回值、数据写到页面、表单提交、ajax、重定向
- java8 list match