`
xihuan&java
  • 浏览: 161679 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 开发笔记

阅读更多
  我接触android快一个月了,平常做了一些练习现在我把手机最常用的功能打电话和发短信要用到的主要代码记录下来
发短信主要代码:
//构建一个default的SmsManager
SmsManager sms = new SmsManager.getDefault();
PaddingIntent padding = new PaddingIntent.getBroadcast(this,0,new Intent(),0);
sms.sendTextMessage("得到的电话号码",null,"发送的信息",padding,null);

打电话的主要代码:
Intent intent = new Intent("android.intent.action.DIAL",Uri.parse("tel:"+得到的电话号码));
StartActivity(intent);

在androidManifest.xml
中加入如下代码:
<!--发短信服务-->
<uses-permission android:name="android.permission.SEND_SMS" />
<!--打电话服务-->
<uses-permission android:name="android.permission.CALL_PHONE"/>



menu
public boolean onCreateOptionsMenu(Menu menu) {
	    super.onCreateOptionsMenu(menu);
		menu.add(0, ADD, 1,"添加日程").setIcon(android.R.drawable.ic_menu_add);
		
		return true;
	}
	public boolean onOptionsItemSelected(MenuItem item) {
		
		switch (item.getItemId()) {
		case ADD:
			showNewDiary();
			return true;
		
		}
		return super.onOptionsItemSelected(item);
		
	}




在Linux下查看数据库文件
1.cmd>adb shell
2.cd data/data
3.ls查看文件
4.进入要查看数据库的项目名
5.ls
6.cd databases
7.ls
8.sqlite3 “数据库名”
9.  .tables

AutoCompleteTextView的 用法:
//把查询出的数据存到数组里
cursor=myDB.queryTile();
		String[] title = new String[cursor.getCount()];
		for (int i = 0; i < title.length; i++) {
			cursor.moveToNext();
			title[i]=cursor.getString(1);
		}
  //AutoCompleteTextView设置adapter
    	adapter2 = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, title);
    	autoCompleteTextView.setAdapter(adapter2);
//为autoCompleteTextView设置单击事件
autoCompleteTextView.setOnItemClickListener(new OnItemClickListener(){
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				Cursor autoCursor=myDB.queryByInfoId((int)arg3);
				autoCursor.moveToFirst();
//查询方法
				mohuSelect();
			}
		});

ExpandableListView的用法:
//查询方法
groupSelect();
//设置单击事件取得id
  listView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

            public boolean onGroupClick(ExpandableListView parent,
                            View v, int groupPosition, long id) {
            	expandId=(int)id;
                    // Log.i(TAG, "id:" + id);
                    return false;
            }
       });
//设置item的点击事件
		listView.setOnChildClickListener(new ExpandableListView.OnChildClickListener(){
			public boolean onChildClick(ExpandableListView parent, View v,
					int groupPosition, int childPosition, long id) {
				Intent intent =new Intent();
				intent.setClass(MyNote.this, SelectActivity.class);
				Bundle bundle = new Bundle();
				bundle.putInt("groupId", expandId);
				bundle.putInt("subGroupId", (int)id);
				intent.putExtras(bundle);
				startActivity(intent);
				finish();
				return false;
			}
			
		});
 
/**按类型查询*/
	public void groupSelect()
	{
		
		/*取得database里的数据*/
		cursor = myDB.group_select();
		
		adapter = new MyExpandableListAdapter(
                cursor,
                this,
                android.R.layout.simple_expandable_list_item_2,
                android.R.layout.simple_expandable_list_item_2,
                new String[] {myDB.GROUP_TYPES}, // Name for group layouts
                new int[] {android.R.id.text1},
                new String[] {myDB.SUB_GROUPS}, // Number for child layouts
                new int[] {android.R.id.text1}
                );
		
		listView.setAdapter(adapter);
		cursor.requery();
		listView.invalidateViews();
	}
//设置adapter
	 public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {
           
	        public MyExpandableListAdapter(Cursor cursor, Context context, int groupLayout,
	                int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
	                int[] childrenTo) {
	            super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childrenFrom,
	                    childrenTo);
	        }
	        @Override
	        protected Cursor getChildrenCursor(Cursor subCursor) {
	        	subCursor=myDB.queryByGroupId(expandId);
	        	return subCursor;
	        }
	    }
 //ExpandableListView group和item长按方法
  listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){
			public void onCreateContextMenu(ContextMenu menu, View arg1,
					ContextMenuInfo arg2) {
				listView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

		            public boolean onGroupClick(ExpandableListView parent,
		                            View v, int groupPosition, long id) {
		            	expandId=(int)id;
		                    return false;
		            }
		       });
				 ExpandableListView.ExpandableListContextMenuInfo info = 
					 (ExpandableListView.ExpandableListContextMenuInfo)arg2;
				  int type = ExpandableListView
	                .getPackedPositionType(info.packedPosition);
				if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP ) {
					menu.setHeaderTitle("请选择操作类型!");
					menu.add(0,0,0,"删除");
					menu.add(0,1,0,"更改类别");
					menu.add(0,2,0,"添加到桌面");
					menu.add(0,3,0,"添加子类别");
					
					return ;
				}
				else {
					menu.setHeaderTitle("请选择操作类型!");
					menu.add(0,4,0,"删除");
					menu.add(0,5,0,"更改子类别!");
					return;
				}
				
			}
		});	

长按事件:
  //添加长按事件
		listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){

			public void onCreateContextMenu(ContextMenu menu, View arg1,
					ContextMenuInfo arg2) {
				menu.setHeaderTitle("请选择操作类型!");
				menu.add(0,0,0,"删除");
				menu.add(0,2,0,"添加到桌面");
			}
		});	
/*对选择的事件进行操作*/

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		 //取得List位置
		ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();
        selectedPosition =(int)info.id;
        switch(item.getItemId()){
                 case 0:        
                	 AlertDialog.Builder builder = new AlertDialog.Builder(MyNote.this);
 		        	builder.setTitle("确定删除吗?")
 		        	.setCancelable(false)
 		        	.setPositiveButton("确定", new DialogInterface.OnClickListener(){

 						public void onClick(DialogInterface dialog, int which) {
 							
 							deleteGroup(selectedPosition);
 						}
 		        		
 		        	})
 		        	.setNegativeButton("取消", new DialogInterface.OnClickListener(){

 						public void onClick(DialogInterface dialog, int which) {
 							dialog.cancel();
 							
 						}
 		        		
 		        	});
 		        	AlertDialog alertDialog =builder.create();
 		        	alertDialog.show();
                 break;
                 
 				case 2:
				    cursor=myDB.groupById(selectedPosition);
				    cursor.moveToNext();
				    String groupType= cursor.getString(1);
			    	  Intent addShortCut = new Intent(ACTION_ADD_SHORTCUT);
				      addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
				      cursor.moveToNext();
				      addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME, groupType);
				      addShortCut.putExtra(Intent.ACTION_VIEW, android.R.drawable.ic_menu_help);
				      addShortCut.putExtra(Intent.ACTION_MAIN, R.layout.main);
				      myIntent.setData(Uri.parse(groupType));
				      Bundle bundle3=new Bundle();
				      bundle3.putString("group", groupType);
				      myIntent.putExtras(bundle3);
				      addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
				    		  myIntent);
				      sendBroadcast(addShortCut);
 		    		break;
 		
        }

		return super.onContextItemSelected(item);
		 
	} 

往SDCard里放文件
在C:\android-sdk-windows-1.6_r1\tools里启动ddms.bat
点击Device—>FileExplorer,可以看到android系统的所有目录及文件
 选中sdcard,点击toolbar上的push file onto Device,选择你要上传的文件

进度条
 progressDialog = ProgressDialog.show(MediaActivity.this,"处理中...",""+findViewById(R.id.myProgress),true);
              
          new Thread()
               {
                  public void run()
                  {
                     try{
                        // 把在显示进度条时做的动作放在这里,如 call web service
                       // 这里用 sleep 来替代
                   	  progressDialog.findViewById(R.id.myProgress);
                  	  audiomanage.adjustVolume(AudioManager.ADJUST_RAISE, 0);
                        volume=audiomanage.getStreamVolume(AudioManager.STREAM_RING);
                       myProgressBar.setProgress(volume);
                        mode=audiomanage.getRingerMode();
                      sleep(5000);
                   }
                   catch(Exception e)
                    {
                      
                    }
                    // 关掉进度条
                    progressDialog.dismiss();
                }
             }.start();



<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:id="@+id/lanauageShow"
    android:textSize="7pt"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1.0"
    />
    <EditText 
    android:id="@+id/lanauageAnswer"
    android:layout_width="fill_parent"
    android:layout_height="180px"
    android:layout_weight="1.0"
    android:editable="false"
    />
</LinearLayout>
</ScrollView>
<LinearLayout
        android:background="#808080"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_gravity="bottom">
       <TextView
        android:layout_centerInParent="true"
        android:textColor="#FFFFFF"
        android:text="@string/answer"
        android:layout_width="wrap_content"
    android:layout_height="wrap_content"/> 
    <EditText
       android:layout_centerInParent="true"
       android:id="@+id/lanauageEdit"
       android:layout_width="120px"
       android:layout_height="wrap_content"/>
    <Button
       android:layout_centerInParent="true"
       android:id="@+id/lanauageSure"
       android:text="@string/sure"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />
     <Button
       android:layout_centerInParent="true"
       android:id="@+id/lanauageNext"
       android:text="@string/next"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />    
    </LinearLayout>
</FrameLayout>

Intent是Activity与Activity之间,Activity与Service之间传递参数的介质

Intent.putExtras(key, value)几乎可以包括各种类型的值,但是却没有类似List<Object>之类的传递参数

再加班无聊的时候,我试了试,发现可以把list强转成Serializable类型,然后通过putExtras(key, (Serializable)list)方法传递过去,接受的时候用(List<YourObject>) getIntent().getSerializable(key)就可以接受到List<YourObject>数据了

但是最重要的一点是:你的YourObject类必须要实现Serializable接口,切记切记,不然会报错,运行时异常(与parcel相关)

总结:保证你自己定义的类实现了Serializable接口,然后传递list的时候强转成Serializable类型,接受的时候再转换回来就可以了!
分享到:
评论
2 楼 xihuan&java 2011-03-30  
ouyangfeng521 写道
能发一下整个项目吗?

呵呵,我只是把日常用到的一些基础代码记录了一下,网上有很多源代码的
1 楼 ouyangfeng521 2011-03-28  
能发一下整个项目吗?

相关推荐

    Android开发笔记全集

    《Android开发笔记全集》是一份综合性的学习资源,涵盖了Android应用开发的多个核心领域,旨在帮助开发者系统地掌握Android平台的开发技能。这个压缩包包含的文件名为“Android开发笔记”,暗示着它可能是一个系列的...

    最新最全的Android开发笔记

    这份"最新最全的Android开发笔记"涵盖了Android应用开发的各个方面,旨在帮助开发者提升技能,跟上快速发展的Android生态系统。 笔记首先介绍了Android开发的基础,包括安装Android Studio,这个强大的集成开发环境...

    全网最全Android开发笔记.zip

    【Android开发笔记】是一部全面覆盖Android开发核心技术与实践的综合资料,旨在帮助开发者从零基础到精通,深入了解Android系统的工作原理以及应用开发的各种技巧。笔记包含了大量的实例代码、技术解析和实战经验,...

    Android开发笔记

    ### Android开发笔记 #### Intent 广播机制 在Android应用开发过程中,经常需要实现不同组件间的通信,其中一种常见的通信方式就是使用`Intent`广播机制。`Intent`广播是一种允许发送一个`Intent`到所有已经注册...

    android开发笔记.pdf

    Android 开发笔记 Android 开发笔记中涵盖了多个重要的知识点,以下是对标题、描述、标签和部分内容的详细解释: 标题: Android 开发笔记.pdf 描述: Android 开发笔记.pdf 标签: 技术及资料 知识点: 1. 广播...

    android开发笔记2

    这份“android开发笔记2”显然旨在帮助开发者提升在该平台上的编程技能。以下将分别就标题、描述以及标签中的关键点进行详细解释,并结合压缩包内的文件内容展开讨论。 标题“android开发笔记2”表明这是一系列笔记...

    android开发笔记4

    "Android开发笔记4"专注于在Real6410开发板上的应用开发,旨在帮助开发者快速提升在Android平台上的技术水平。Real6410是一款常见的嵌入式硬件平台,常用于Android系统的移植和定制,具有良好的性能和稳定性,对于...

    android开发笔记5

    "Android开发笔记5"专注于Real6410开发板的使用,旨在帮助开发者快速提升Android技术能力。本文将深入解析笔记中的关键知识点,包括Android的基础UI编程。 首先,让我们关注"read me.doc"。这个文档通常包含了项目...

    android开发笔记6

    在“android开发笔记6”中,我们可以聚焦于Android平台的开发知识,特别是针对Real6410开发板的实践应用。这个笔记集旨在帮助开发者快速提升Android技术能力,包括理解和运用关键概念、工具以及最佳实践。 首先,让...

    android 开发笔记3

    这篇“android 开发笔记3”是专为real6410开发板设计的学习资料,旨在帮助开发者快速提升技能,充分利用该开发板进行Android应用的构建和优化。 1. **Android开发基础**: - Android系统架构:理解Linux内核、HAL...

    android开发笔记3

    在“android开发笔记3”中,我们可以深入学习到Android应用程序开发的关键步骤,特别是针对6410开发板的系统移植过程。这篇笔记是为初学者量身定制的,旨在帮助他们快速掌握Android开发的核心技能。 首先,我们关注...

    android开发笔记1

    "android开发笔记1"主要针对6410开发板,提供了移植Android 2.1系统的详尽步骤,是Android初学者理想的自学资源。下面将根据提供的标签和文件名称,深入讲解相关知识点。 1. Android开发环境搭建:在开始Android...

    android开发笔记总结

    ### Android开发笔记总结 #### 学习基础 在深入探讨Android开发之前,我们先回顾一下基础知识,这是构建高质量Android应用程序的基石。 - **Java基础知识**:Android应用开发主要基于Java语言,因此熟悉Java是...

    android开发笔记入门级

    这份"android开发笔记入门级"资源,正是为了帮助初学者系统地学习和理解Android应用开发所准备的。它以易懂的方式,逐步引导学习者深入这个充满机遇的领域。 首先,我们要明白Android是一个开源的操作系统,主要...

Global site tag (gtag.js) - Google Analytics