惯用代码


1.使用剪切板可以直接实现数据的传输 ClipboardManager
view plaincopy to clipboardprint?
public void setClipboard(String text) {   
    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);   
    clipboard.setText(text);   
}   
  
    
public String getClipboard() {   
    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);   
    return clipboard.getText().toString();   
}  
public void setClipboard(String text) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text);
}

public String getClipboard() {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
return clipboard.getText().toString();

有关剪切板的数据类型可以通过 该类的boolean  hasText() 方法判断。
2.SharedPreferences
SharedPreferences是以键值对来存储应用程序的配置信息的一种方式,它只能存储基本数据类型。一个程序的配置文件仅可以在本应用程序中使用,或者说只能在同一个包内使用,不能在不同的包之间使用。 实际上SharedPreferences是采用了XML格式将数据存储到设备中,在DDMS中的File Explorer中的/data/data/<package name>/shares_prefs下。 
返回值   SharedPreferences

函数 Context.getSharedPreferences(String name,int mode)

备注

  name为本组件的配置文件名(如果想要与本应用程序的其他组件共享此配置文件,可以用这个名字来检索到这个配置文件)。 

mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。


返回值 SharedPreferences
  函数 Activity.getPreferences(int mode)

备注

配置文件仅可以被调用的Activity使用。 
mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE。


如果要读取配置文件信息,只需要直接使用SharedPreferences对象的getXXX()方法即可,而如果要写入配置信息,则必须先调用SharedPreferences对象的edit()方法,使其处于可编辑状态,然后再调用putXXX()方法写入配置信息,最后调用commit()方法提交更改后的配置文件。 
以下是示例代码: 
view plaincopy to clipboardprint?
import android.app.Activity;    
import android.content.SharedPreferences;    
public class Calc extends Activity {    
    public static final String PREFS_NAME = "MyPrefsFile";    
    . . .    
    @Override    
    protected void onCreate(Bundle state){    
        super.onCreate(state);    
        . . .    
        //载入配置文件    
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);    
        //或者使用 SharedPreferences settings = getPreferences(0);    
        boolean silent = settings.getBoolean("silentMode", false);    
        setSilent(silent);    
    }    
    @Override    
    protected void onStop(){    
        super.onStop();    
        //写入配置文件。可以使用SharedPreferences.Editor来辅助解决。    
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);    
        SharedPreferences.Editor editor = settings.edit();    
        editor.putBoolean("silentMode", mSilentMode);    
        editor.commit(); //一定要记得提交    
        //或者再简单化一可以这样写    
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);    
        setting.edit().putBoolean(“silentMode”,mSilentMode).commit();    
    }    
}  
import android.app.Activity; 
import android.content.SharedPreferences; 
public class Calc extends Activity { 
public static final String PREFS_NAME = "MyPrefsFile"; 
. . . 
@Override 
protected void onCreate(Bundle state){ 
  super.onCreate(state); 
  . . . 
  //载入配置文件 
  SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
  //或者使用 SharedPreferences settings = getPreferences(0); 
  boolean silent = settings.getBoolean("silentMode", false); 
  setSilent(silent); 

@Override 
protected void onStop(){ 
  super.onStop(); 
  //写入配置文件。可以使用SharedPreferences.Editor来辅助解决。 
  SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
  SharedPreferences.Editor editor = settings.edit(); 
  editor.putBoolean("silentMode", mSilentMode); 
  editor.commit(); //一定要记得提交 
  //或者再简单化一可以这样写 
  SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
  setting.edit().putBoolean(“silentMode”,mSilentMode).commit(); 



=====================================================================================
添加快捷图标

2.drawable-hdpi,drawable-ldpi,drawable-mdpi有什么区别? 
答:主要是为了支持多分辨率的.
hdpi里面主要放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
mdpi 里面主要放中等分辨率的图片,如HVGA (320x480)
ldpi里面主要放低分辨率的图片,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片
所以在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片
3.Android 判断SdCard是否存在? 
答:if (android .os.Environment.getExternalStorageState().equals( 
android.os.Environment.MEDIA_MOUNTED))
4.Android 删除文件为什么总是报错,删除不了? 
答:Android自1.6版本以后,引入了一个权限,让用户可以修改外部存储设备文件,这个问题只要我们在Manifest.xml加一个permission节点就可以解决了:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
5.Android 如何判断系统语言? 

view plaincopy to clipboardprint?
01.private String getLocaleLanguage() {   
02.        Locale l = Locale.getDefault();   
03.        return String.format("%s-%s", l.getLanguage(), l.getCountry());   
04.    }  
private String getLocaleLanguage() {
  Locale l = Locale.getDefault();
  return String.format("%s-%s", l.getLanguage(), l.getCountry());
}  
返回en-US(也可能是en-XX)表示英语,zh-CN表示简体中文,zh-TW表示繁体中文,以此类推。
6.Android 如何判断系统时间是12小时制还是24小时制? 
view plaincopy to clipboardprint?
01.ContentResolver cv = this.getContentResolver();   
02.        String strTimeFormat = android.provider.Settings.System.getString(cv,   
03.                                           android.provider.Settings.System.TIME_12_24);  
ContentResolver cv = this.getContentResolver();
         String strTimeFormat = android.provider.Settings.System.getString(cv,
                                            android.provider.Settings.System.TIME_12_24); 
返回值strTimeFormat有三种可能一种是NULL,一种是24,另外一种是12.

以上来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/05/27/5629262.aspx

解决办法:http://blog.itcaicai.com/?p=517

最近遇到一个时间显示的问题,按照需求,是要根据24小时制来显示不同的格式。包括AM PM的信息。

于是,采用了如下方法:

相信大家在百度上找到的,大多数是这种处理方式。

但是,在客户的手机上,传回的log发现。这里获取到的strTimeFormat值为null。

解决方案:放弃此方法,改为使用

如果为true,则是24小时制。如果为false,则是12小时制。

疑问之处在于:这俩种方法到底有何不同。我们看下系统的DateFormat.is24HourFormat()方法的详情就知道了。贴代码:

就发现,其实后面这个方法中最先也是用第一种方法来获取的。但明显,第一种方法有出现null的这种情况。于是后面加了处理。

所以还是推荐大家,如果有需要,还是使用第二钟方法了。



错误集:
1. UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added:Lorg/xmlpull/v1/XmlPullParser; 
.... 
Conversion to Dalvik format failed with error 1 

i solved the problem.
i seems that is have two jars on my buildpath that include the same package and classes.
i used smack.jar and android_maps_lib-1.0.2
delete this package from one jar solved the problem.

4. m访问网络(httppost httpget) 遇到本地pc设置有代理的问题时,依照一般的连接方式有错误 
需在模拟器上添加:
System.getProperties().put("proxySet", "true");  
System.getProperties().put("proxyHost", proxyIp);  
System.getProperties().put("proxyPort", proxyPort);
第一行通知 Java 您要通过代理进行连接,第二行指定代理所在的机器,第三行指定代理监听的端口


5.android 正确获取屏幕像素大小
DisplayMetrics dm =new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int widthPixels= dm.widthPixels;
        int heightPixels= dm.heightPixels;
        float density = dm.density;
                int screenWidth = widthPixels * density ;
                int screenHeight = heightPixels * density ;

6. 本地assets目录下的html文件:web2.loadUrl("file:///android_asset/index.html") ;
InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );                               
InputStreamReader inputReader = new InputStreamReader(getResources().openRawResource(R.raw.test1));      


7. 检查网络是否可用:
public static boolean chkConnection() {
ConnectivityManager cwjManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        cwjManager.getActiveNetworkInfo();
        if (cwjManager.getActiveNetworkInfo() !=null) {
            return cwjManager.getActiveNetworkInfo().isAvailable();
        }
    return false;
}

8.获取正在运行的任务,
首先需要声明一个活动对象管理器(ActivityManager) 所有的活动任务都属于此,然后通过获取服务可以得到所有的活动对象,然后通过活动对象可以得到所有运行的任务和服务,当然要获取服务和任务是使用不同的方法,但是方式是一样的。下面是获取代码: 


代码 void getTask() {

ActivityManager activityManager;
try {
activityManager = (ActivityManager) this
.getSystemService(ACTIVITY_SERVICE);

arylistTask =new ArrayList<String>();



List<ActivityManager.RunningTaskInfo> mRunningTasks =

activityManager.getRunningTasks(30); //30表示获取的最大数

/* 以循环及baseActivity方式取得任务名称与ID */

for (RunningTaskInfo amTask : mRunningTasks)
{
Log.d("TaskInfo", amTask.baseActivity.getClassName()+"("+amTask.id+")");
}

//获取服务
List<RunningServiceInfo> mserviceTasks =

activityManager.getRunningServices(30);
/* 以循环方式取得任务名称与ID */
for (RunningServiceInfo serinfo : mserviceTasks)
{
Log.d("TaskServerInfo", serinfo.process+"("+serinfo.pid+")");
}
}

catch (Exception e)

{



}



9.Android 获取MIEI ISMI Sim卡串号等信息

TelephonyManager telephonemanage = (TelephonyManager) getWindow().getContext().getSystemService(Context.TELEPHONY_SERVICE);
try {            
    edit1.setText("MIEI: " + telephonemanage.getDeviceId()+ " SimSSN " + telephonemanage.getSimSerialNumber()+ " IMSI " + telephonemanage.getSubscriberId());        
} catch (Exception e) {            
    edit1.setText(e.getMessage());        





10.添加快捷图标

代码 privatevoid addShortcut(){ 
Intent shortcut =new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 

//快捷方式的名称 
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); 
// shortcut.putExtra("duplicate", false); //不允许重复创建 

//指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer 
//注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序 
// ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName()); 

// shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); 
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,ShortcutTest.class)); 

//快捷方式的图标 
ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); 
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); 

sendBroadcast(shortcut); 



   shortcut.putExtra("duplicate", false); //表示的为不允许重复设置
此种代码,直接添加到桌面上,并且也在上图所示的地方显示,但是此需要添加下面的权限:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />  

11. 防止锁屏:
PowerManager mPowerManager  = (PowerManager) getSystemService(POWER_SERVICE); //电源控制,比如防锁屏
  WakeLock mWakeLock= mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass()
                .getName()); //处理屏幕防止锁屏

mWakeLock.acquire();  //恢复时解除锁屏
mWakeLock.release();

12. Drawable,Bitmap相互转换:


public static Bitmap drawableToBitmap(Drawable drawable) {   
           
        Bitmap bitmap = Bitmap   
                        .createBitmap(   
                                        drawable.getIntrinsicWidth(),   
                                        drawable.getIntrinsicHeight(),   
                                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   
                                                        : Bitmap.Config.RGB_565);   
        Canvas canvas = new Canvas(bitmap);   
        //canvas.setBitmap(bitmap);  
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());   
        drawable.draw(canvas);   
        return bitmap;   
}  


Resources res=getResources();   
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);  


private byte[] Bitmap2Bytes(Bitmap bm){   
    ByteArrayOutputStream baos = new ByteArrayOutputStream();     
    bm.compress(Bitmap.CompressFormat.PNG, 100, baos);     
    return baos.toByteArray();   
   }  


private Bitmap Bytes2Bimap(byte[] b){   
            if(b.length!=0){   
                return BitmapFactory.decodeByteArray(b, 0, b.length);   
            }   
            else {   
                return null;   
            }   
      } 

1:查看是否有存储卡插入
String status=Environment.getExternalStorageState();
if(status.equals(Enviroment.MEDIA_MOUNTED))
{
   说明有SD卡插入
}

2:让某个Activity透明

OnCreate中不设Layout

this.setTheme(R.style.Theme_Transparent);

以下是Theme_Transparent的定义(注意transparent_bg是一副透明的图片)

3:在屏幕元素中设置句柄
使用Activity.findViewById来取得屏幕上的元素的句柄. 使用该句柄您可以设置或获取任何该对象外露的值.
TextView msgTextView = (TextView)findViewById(R.id.msg);
   msgTextView.setText(R.string.push_me);

4:发送短信

            String body=”this is mms demo”;

           Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”smsto”, number, null));
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);
           mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);
            startActivity(mmsintent);

   5:发送彩信

           StringBuilder sb = new StringBuilder();

            sb.append(”file://”);

            sb.append(fd.getAbsoluteFile());

            Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”mmsto”, number, null));
            // Below extra datas are all optional.
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);
            intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);

            startActivity(intent);

7:发送Mail

             mime = “img/jpg”;
            shareIntent.setDataAndType(Uri.fromFile(fd), mime);
            shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(fd));
            shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);

            shareIntent.putExtra(Intent.EXTRA_TEXT, body);

8:注册一个BroadcastReceiver

registerReceiver(mMasterResetReciever, new IntentFilter(”oms.action.MASTERRESET”));

private BroadcastReceiver mMasterResetReciever = new BroadcastReceiver() {

        public void onReceive(Context context, Intent intent){
            String action = intent.getAction();
            if(”oms.action.MASTERRESET”.equals(action)){
                RecoverDefaultConfig();
            }
        }

    };

9:定义ContentObserver,监听某个数据表

private ContentObserver mDownloadsObserver = new DownloadsChangeObserver(Downloads.CONTENT_URI);

private class DownloadsChangeObserver extends ContentObserver {
        public DownloadsChangeObserver(Uri uri) {
            super(new Handler());

        }

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

10:获得 手机UA

public String getUserAgent()
    {
           String user_agent = ProductProperties.get(ProductProperties.USER_AGENT_KEY, null);
            return user_agent;
    }

11:清空手机上Cookie

CookieSyncManager.createInstance(getApplicationContext());
        CookieManager.getInstance().removeAllCookie();

12:建立GPRS连接

   //Dial the GPRS link.
    private boolean openDataConnection() {
        // Set up data connection.
        DataConnection conn = DataConnection.getInstance();    

            if (connectMode == 0) {
                ret = conn.openConnection(mContext, “cmwap”, “cmwap”, “cmwap”);
            } else {
                ret = conn.openConnection(mContext, “cmnet”, “”, “”);
            }

    }

13:PreferenceActivity 用法

public class Setting extends PreferenceActivity



    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }



Setting.xml:

            android:key=”seting2″
            android:title=”@string/seting2″
            android:summary=”@string/seting2″/>

            android:key=”seting1″
            android:title=”@string/seting1″
            android:summaryOff=”@string/seting1summaryOff”
            android:summaryOn=”@stringseting1summaryOff”/>

14:通过HttpClient从指定server获取数据

             DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpGet method = new HttpGet(“[url]http://www.baidu.com/1.html

REFERENCES:http://www.it2down.com/it-mobile/606931.htm

原文地址:https://www.cnblogs.com/anee/p/3375651.html