几个项目中用到的代码片段

打印调用栈

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值