声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com
正文
1、发送不重复的通知(Notification)
public
static
void sendNotification(Context context, String title,
String message, Bundle extras) {
Intent mIntent =
new Intent(context, FragmentTabsActivity.
class);
mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mIntent.putExtras(extras);
int requestCode = (
int) System.currentTimeMillis();
PendingIntent mContentIntent = PendingIntent.getActivity(context,
requestCode, mIntent, 0);
Notification mNotification =
new NotificationCompat.Builder(context)
.setContentTitle(title).setSmallIcon(R.drawable.app_icon)
.setContentIntent(mContentIntent).setContentText(message)
.build();
mNotification.flags |= Notification.FLAG_AUTO_CANCEL;
mNotification.defaults = Notification.DEFAULT_ALL;
NotificationManager mNotificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(requestCode, mNotification);
}
代码说明:
关键点在这个requestCode,这里使用的是当前系统时间,巧妙的保证了每次都是一个新的Notification产生。
2、代码设置TextView的样式
使用过自定义Dialog可能马上会想到用如下代码:
new TextView(this,null,R.style.text_style);
但你运行这代码你会发现毫无作用!正确用法:
new TextView(
new ContextThemeWrapper(
this, R.style.text_style))
来自这里。
3、 ip地址转成8位十六进制串
/**
ip转16进制
*/
public
static String ipToHex(String ips) {
StringBuffer result =
new StringBuffer();
if (ips !=
null) {
StringTokenizer st =
new StringTokenizer(ips, ".");
while (st.hasMoreTokens()) {
String token = Integer.toHexString(Integer.parseInt(st.nextToken()));
if (token.length() == 1)
token = "0" + token;
result.append(token);
}
}
return result.toString();
}
/**
16进制转ip
*/
public
static String texToIp(String ips) {
try {
StringBuffer result =
new StringBuffer();
if (ips !=
null && ips.length() == 8) {
for (
int i = 0; i < 8; i += 2) {
if (i != 0)
result.append('.');
result.append(Integer.parseInt(ips.substring(i, i + 2), 16));
}
}
return result.toString();
}
catch (NumberFormatException ex) {
Logger.e(ex);
}
return "";
}
ip:192.168.68.128 16 =>hex :c0a84480
4、WebView保留缩放功能但隐藏缩放控件
mWebView.getSettings().setSupportZoom(
true);
mWebView.getSettings().setBuiltInZoomControls(
true);
if (DeviceUtils.hasHoneycomb())
mWebView.getSettings().setDisplayZoomControls(
false);
注意:setDisplayZoomControls是在API Level 11中新增。
5、获取网络类型名称
public
static String getNetworkTypeName(Context context) {
if (context !=
null) {
ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectMgr !=
null) {
NetworkInfo info = connectMgr.getActiveNetworkInfo();
if (info !=
null) {
switch (info.getType()) {
case ConnectivityManager.TYPE_WIFI:
return "WIFI";
case ConnectivityManager.TYPE_MOBILE:
return getNetworkTypeName(info.getSubtype());
}
}
}
}
return getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN);
}
public
static String getNetworkTypeName(
int type) {
switch (type) {
case TelephonyManager.NETWORK_TYPE_GPRS:
return "GPRS";
case TelephonyManager.NETWORK_TYPE_EDGE:
return "EDGE";
case TelephonyManager.NETWORK_TYPE_UMTS:
return "UMTS";
case TelephonyManager.NETWORK_TYPE_HSDPA:
return "HSDPA";
case TelephonyManager.NETWORK_TYPE_HSUPA:
return "HSUPA";
case TelephonyManager.NETWORK_TYPE_HSPA:
return "HSPA";
case TelephonyManager.NETWORK_TYPE_CDMA:
return "CDMA";
case TelephonyManager.NETWORK_TYPE_EVDO_0:
return "CDMA - EvDo rev. 0";
case TelephonyManager.NETWORK_TYPE_EVDO_A:
return "CDMA - EvDo rev. A";
case TelephonyManager.NETWORK_TYPE_EVDO_B:
return "CDMA - EvDo rev. B";
case TelephonyManager.NETWORK_TYPE_1xRTT:
return "CDMA - 1xRTT";
case TelephonyManager.NETWORK_TYPE_LTE:
return "LTE";
case TelephonyManager.NETWORK_TYPE_EHRPD:
return "CDMA - eHRPD";
case TelephonyManager.NETWORK_TYPE_IDEN:
return "iDEN";
case TelephonyManager.NETWORK_TYPE_HSPAP:
return "HSPA+";
default:
return "UNKNOWN";
}
}
6、Android解压Zip包
/**
* 解压一个压缩文档 到指定位置
*
*
@param
zipFileString 压缩包的名字
*
@param
outPathString 指定的路径
*
@throws
Exception
*/
public
static
void UnZipFolder(String zipFileString, String outPathString)
throws Exception {
java.util.zip.ZipInputStream inZip =
new java.util.zip.ZipInputStream(
new java.io.FileInputStream(zipFileString));
java.util.zip.ZipEntry zipEntry;
String szName = "";
while ((zipEntry = inZip.getNextEntry()) !=
null) {
szName = zipEntry.getName();
if (zipEntry.isDirectory()) {
//
get the folder name of the widget
szName = szName.substring(0, szName.length() - 1);
java.io.File folder =
new java.io.File(outPathString + java.io.File.separator + szName);
folder.mkdirs();
}
else {
java.io.File file =
new java.io.File(outPathString + java.io.File.separator + szName);
file.createNewFile();
//
get the output stream of the file
java.io.FileOutputStream out =
new java.io.FileOutputStream(file);
int len;
byte[] buffer =
new
byte[1024];
//
read (len) bytes into buffer
while ((len = inZip.read(buffer)) != -1) {
//
write (len) byte from buffer at the position 0
out.write(buffer, 0, len);
out.flush();
}
out.close();
}
}
//
end of while
inZip.close();
}
//
end of func
7、 从assets中读取文本和图片资源
/**
从assets 文件夹中读取文本数据
*/
public
static String getTextFromAssets(
final Context context, String fileName) {
String result = "";
try {
InputStream in = context.getResources().getAssets().open(fileName);
//
获取文件的字节数
int lenght = in.available();
//
创建byte数组
byte[] buffer =
new
byte[lenght];
//
将文件中的数据读到byte数组中
in.read(buffer);
result = EncodingUtils.getString(buffer, "UTF-8");
in.close();
}
catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
从assets 文件夹中读取图片
*/
public
static Drawable loadImageFromAsserts(
final Context ctx, String fileName) {
try {
InputStream is = ctx.getResources().getAssets().open(fileName);
return Drawable.createFromStream(is,
null);
}
catch (IOException e) {
if (e !=
null) {
e.printStackTrace();
}
}
catch (OutOfMemoryError e) {
if (e !=
null) {
e.printStackTrace();
}
}
catch (Exception e) {
if (e !=
null) {
e.printStackTrace();
}
}
return
null;
}
系列
Android实用代码七段(三)
Android实用代码七段(二)
Android实用代码七段(一)