`
孤冰独狼
  • 浏览: 12717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
android判断程序是否已经启动 android
源码:
取得系统中已经开启的程序进程列表,在列表中查看有没有指定程序包名.
String pkgName = "mobile.szb";
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo> applist = am.getRunningAppProcesses();
	int size = applist.size();
	boolean isRunning = false;
	for (int i = 0; i < size; ++i) {
	RunningAppProcessInfo pInfo = applist.get(i);
	String psName = pInfo.processName;
	//mylog.vv("i= "+i+"  psName: "+psName);
	if (psName.contains(pkgName)) {
		isRunning = true;
		break;
				}
			}
android获取当前运行应用的activity android
源码:
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
 RunningTaskInfo info = manager.getRunningTasks(1).get(0);
String shortClassName = info.topActivity.getShortClassName();    //类名
String className = info.topActivity.getClassName();              //完整类名
String packageName = info.topActivity.getPackageName();          //包名


注明:需要加入权限: <uses-permission android:name="android.permission.GET_TASKS"></uses-permission>
Android WebView处理404等错误 android http://www.eoeandroid.com/thread-148371-1-1.html
private boolean validStatusCode(String url) {  
          try {
                HttpURLConnection.setFollowRedirects(false); 
                URL validatedURL = new URL(url);
            HttpURLConnection con = (HttpURLConnection) validatedURL
                    .openConnection();
            con.setRequestMethod("HEAD");
            int responseCode = con.getResponseCode(); 
            if (responseCode == 404 || responseCode == 405 
                            || responseCode == 504) {
                return false;
            } 
            return true;
            } catch (Exception e) {
                    return false;
            } 
    } 
扩展DigitalClock显示日期+时间 android, xml
package com.tele.util;
//DigitalClockView
/**
 * Copyright (C) 2006 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.util.Calendar;

import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.os.Handler;
import android.os.SystemClock;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.util.AttributeSet;
import android.widget.TextView;

/***
 * Like AnalogClock, but digital.  Shows seconds.
 *
 * FIXME: implement separate views for hours/minutes/seconds, so
 * proportional fonts don't shake rendering
 */

public class DigitalClockView extends TextView {

    Calendar mCalendar;
//    private final static String m12 = "h:mm:ss aa";
//    private final static String m24 = "k:mm:ss";
    
    private final static String m12 = "h:mm aa";
    private final static String m24 = "k:mm";
    private FormatChangeObserver mFormatChangeObserver;

    private Runnable mTicker;
    private Handler mHandler;

    private boolean mTickerStopped = false;

    String mFormat;

    public DigitalClockView(Context context) {
        super(context);
        initClock(context);
    }

    public DigitalClockView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initClock(context);
    }

    private void initClock(Context context) {
        Resources r = context.getResources();

        if (mCalendar == null) {
            mCalendar = Calendar.getInstance();
        }

        mFormatChangeObserver = new FormatChangeObserver();
        getContext().getContentResolver().registerContentObserver(
                Settings.System.CONTENT_URI, true, mFormatChangeObserver);

        setFormat();
    }

    @Override
    protected void onAttachedToWindow() {
        mTickerStopped = false;
        super.onAttachedToWindow();
        mHandler = new Handler();

        /***
         * requests a tick on the next hard-second boundary
         */
        mTicker = new Runnable() {
                public void run() {
                    if (mTickerStopped) return;
                    mCalendar.setTimeInMillis(System.currentTimeMillis());
                    setText(DateFormat.format(mFormat, mCalendar));
                    invalidate();
                    long now = SystemClock.uptimeMillis();
                    long next = now + (1000 - now % 1000);
                    mHandler.postAtTime(mTicker, next);
                }
            };
        mTicker.run();
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        mTickerStopped = true;
    }

    /***
     * Pulls 12/24 mode from system settings
     */
    private boolean get24HourMode() {
        return android.text.format.DateFormat.is24HourFormat(getContext());
    }

    private void setFormat() {
        if (get24HourMode()) {
            mFormat = m24;
        } else {
            mFormat = m12;
        }
    }

    private class FormatChangeObserver extends ContentObserver {
        public FormatChangeObserver() {
            super(new Handler());
        }

        @Override
        public void onChange(boolean selfChange) {
            setFormat();
        }
    }
}






<!-- 时钟 -->
			<com.tele.util.DigitalClockView android:layout_width="wrap_content" android:layout_height="wrap_content"
				android:text="" android:textSize="40sp" android:textStyle="bold"
				android:textColor="#ffffffff" android:gravity="left"
				android:layout_x="60sp" android:layout_y="10sp"
                android:shadowColor="@android:color/white" android:shadowRadius="2.0"
				/>
Android读写XML android Android读写XML(下)——创建XML文档
在前面的2篇文章Android读写XML(上)——package说明 、Android读写XML(中)——SAX 中想必大家对XML文件读取的方法已经比较熟悉了,在这里我们就不多说了,直接说明如何将信息写成XML文件,首先介绍Andoid SDK中的相关类。

类  说明 
XmlSerializer  Define an interface to serialziation of XML Infoset.定义一个接口来实现XML信息的串行化。 

什么是串行化?
对象的串型化,也有叫做对象的序列话,并不只是简单的把对象保存在存储器上,它可以使我们在流中传输对象,使对象变的可以像基本数据一样传递。

下面,我们就直接来看个具体的例子来说明,如何使用XmlSerializer。
private String writeXml(){
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try{
serializer.setOutput(writer);

// <?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
serializer.startDocument(“UTF-8″,true);

// <blog number=”1″>
serializer.startTag(“”,”blog”);
serializer.attribute(“”,”number”,String.valueOf(1));

//<message data=”2009-09-23″>
serializer.startTag(“”,”message”);
serializer.attribute(“”,”date”,”2009-09-23″);

// <title>Android XML</title>
serializer.startTag(“”,”title”);
serializer.text(“Android XML”);
serializer.endTag(“”,”title”);

// <url>http://www.moandroid.com/?p=508 </url>
serializer.startTag(“”,”url”);
serializer.text(“http://www.moandroid.com/?p=508″);
serializer.endTag(“”,”url”);

//</message>
serializer.endTag(“”,”message”);
// </blog>
serializer.endTag(“”,”blog”);
serializer.endDocument();
return writer.toString();
}
catch(Exception e)
{
throw new RuntimeException(e);
}
}

我们先将writeXml()产生的字符串输出 ,看是否是按照我们设计的那样,使用Log.v(“XML”, writeXml())输出调试信息。运行程序,在DDMS中查看程序输出的调试信息,如何查看调试信息请阅读Android DDMS如何使用? 
输出的字符串如下:
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<blog number=”1″>
<message data=”2009-09-23″>
<title>Android XML</title>
<url>http://www.moandroid.com/?p=508</url>
</message>
</blog>
看了运行的结果,对于上面代码的功能,估计大家就明白了,不再这里详细解析。
下面,进一步将字符串写入文件 ,代码如下:
public boolean Write(String path,String txt)
{
try
{
OutputStream os = openFileOutput(path,MODE_PRIVATE);
OutputStreamWriter osw=new OutputStreamWriter(os);
osw.write(txt);
osw.close();
os.close();
}
catch(FileNotFoundException e)
{
return false;
}
catch(IOException e)
{
return false;
}
return true;
}
}

在onCreate()中增加如下代码:Write(“blog.xml”,writeXml())。运行程序,打开DDMS查看写入的XML文档,文件存放在data/data/{package}/files文件夹下,如下:
 
还可以将这个文件从File Explorer中导出到电脑中查看XML文档的具体内容,与输出的字符串完全一样。

总结说明
XML文件的写入就完成了,想必大家对串行化也有应该有一些了解,具体的需要引用那些package请大家到Android SDK去仔细查看吧。

SimpleAdapter添加外部图片 android
Integer[] mThumbIds = { R.drawable.botton_g1, R.drawable.botton_g10,
				R.drawable.botton_g2, R.drawable.botton_g3,
				R.drawable.botton_g5, R.drawable.botton_g6,
				R.drawable.botton_g7, R.drawable.botton_g8,
				R.drawable.botton_g4 };
		String[] appname = { getString(R.string.str_yujingjieshou),
				getString(R.string.str_yujingxiangqing),
				getString(R.string.str_jingqinghuibao),
				getString(R.string.str_now_vido),
				getString(R.string.str_yingjichuli),
				getString(R.string.str_other), getString(R.string.str_sysset),
				getString(R.string.str_softwareupdate),
				getString(R.string.str_info) };

		// 生成动态数组,并且转入数据
		ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();
		for (int i = 0; i < 9; i++) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			if(i==0){
//				System.out.println("mThumbIds[i]"+mThumbIds[i]);
				
				ImageNumberView imageView = new ImageNumberView(this);
				imageView.setImageResource(mThumbIds[i]);
				Bitmap image = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
				Bitmap imageNumber;
				SMSDbHelper smsdb = new SMSDbHelper(MainActivity.this);
				 smsdb.open();
				 int notRoad = smsdb.querySMSByNotReadCount();
				 smsdb.close();
				
				 if (notRoad > 0) {
					 imageNumber = imageView.generatorContactCountIcon(image,notRoad);
					 map.put("ItemImage", imageNumber);
				 }else{
					 map.put("ItemImage", image);
				 }
				
			}else{
				map.put("ItemImage", mThumbIds[i]);
			}
//			map.put("ItemImage", mThumbIds[i]);// 添加图像资源的ID
			map.put("ItemText", appname[i]);// 按序号做ItemText
			
			lstImageItem.add(map);
		}
		// 生成适配器的ImageItem <====> 动态数组的元素,两者一一对应
		SimpleAdapter saImageItems = new SimpleAdapter(this, // 没什么解释
				lstImageItem,// 数据来源
				R.layout.item,// night_item的XML实现
				// 动态数组与ImageItem对应的子项
				new String[] { "ItemImage", "ItemText"},
				// ImageItem的XML文件里面的一个ImageView,两个TextView ID
				new int[] { R.id.ItemImage, R.id.ItemText });

		saImageItems.setViewBinder(new ViewBinder() {  
            public boolean setViewValue(
                                View view, 
                                Object data,  
                             String textRepresentation) {  
                //判断是否为我们要处理的对象  
                if(view instanceof ImageView  && data instanceof Bitmap){  
                    ImageView iv = (ImageView) view;  
                    iv.setImageBitmap((Bitmap) data);  
                    return true;  
                }else  
                return false;  
            }  
        });  
		
		gridView.setAdapter(saImageItems);// weiwei
		
Global site tag (gtag.js) - Google Analytics