首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android基础及根本应用

2012-09-05 
android基础及基本应用(一)、ActivityAndroid中,Activity是所有程序的根本,所有程序的流程都运行在Activity

android基础及基本应用
(一)、Activity
Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com/feisky/archive/2010/01/01/1637427.html,由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态)。
对于Activity,关键是其生命周期的把握(如下图),其次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),以及Activity之间的跳转和数据传输(intent)。

Activity中常用的函数有SetContentView()   findViewById()    finish()   startActivity(),其生命周期涉及的函数有:

void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()

注意的是,Activity的使用需要在Manifest文件中添加相应的<Activity>,并设置其属性和intent-filter。

(二)、Intent
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。在SDK中给出了Intent作用的表现形式为:
通过Context.startActivity() orActivity.startActivityForResult() 启动一个Activity;
通过 Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;
通过广播方法(比如 Context.sendBroadcast(),Context.sendOrderedBroadcast(),  Context.sendStickyBroadcast()) 发给broadcast receivers。

一、Intent属性的设置,包括以下几点:(以下为XML中定义,当然也可以通过Intent类的方法来获取和设置)
1、Action,也就是要执行的动作
SDk中定义了一些标准的动作,包括
<action android:name="com.example.project.SHOW_CURRENT" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="video/mpeg" android:scheme="http" . . . /> <data android:mimeType="image/*" /><data android:scheme="http" android:type="video/*" />
完整的实例
<activity android:name="NotesList" android:label="@string/title_notes_list">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>            <intent-filter>                <action android:name="android.intent.action.VIEW" />                <action android:name="android.intent.action.EDIT" />                <action android:name="android.intent.action.PICK" />                <category android:name="android.intent.category.DEFAULT" />                <data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />            </intent-filter>            <intent-filter>                <action android:name="android.intent.action.GET_CONTENT" />                <category android:name="android.intent.category.DEFAULT" />                <data android:mimeType="vnd.android.cursor.item/vnd.google.note" />            </intent-filter>        </activity>




三、Intent用法实例
1、无参数Activity跳转
Intent it = new Intent(Activity.Main.this, Activity2.class);startActivity(it); 
 

2、向下一个Activity传递数据(使用Bundle和Intent.putExtras)
Intent it = new Intent(Activity.Main.this, Activity2.class);Bundle bundle=new Bundle();bundle.putString("name", "This is from MainActivity!");it.putExtras(bundle);       // it.putExtra(“test”, "shuju”);startActivity(it);            // startActivityForResult(it,REQUEST_CODE);


对于数据的获取可以采用:
Bundle bundle=getIntent().getExtras();String name=bundle.getString("name");


3、向上一个Activity返回结果(使用setResult,针对
startActivityForResult(it,REQUEST_CODE)启动的Activity)        Intent intent=getIntent();        Bundle bundle2=new Bundle();        bundle2.putString("name", "This is from ShowMsg!");        intent.putExtras(bundle2);        setResult(RESULT_OK, intent);


4、回调上一个Activity的结果处理函数(onActivityResult)
@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        if (requestCode==REQUEST_CODE){            if(resultCode==RESULT_CANCELED)                  setTitle("cancle");            else if (resultCode==RESULT_OK) {                 String temp=null;                 Bundle bundle=data.getExtras();                 if(bundle!=null)   temp=bundle.getString("name");                 setTitle(temp);            }        }    }




四、下面是转载来的其他的一些Intent用法实例(转自javaeye)


1、显示网页
  
Uri uri = Uri.parse("http://google.com");     Intent it = new Intent(Intent.ACTION_VIEW, uri);     startActivity(it);



2、显示地图
  
Uri uri = Uri.parse("geo:38.899533,-77.036476");     Intent it = new Intent(Intent.ACTION_VIEW, uri);      startActivity(it);      //其他 geo URI 範例     //geo:latitude,longitude     //geo:latitude,longitude?z=zoom     //geo:0,0?q=my+street+address     //geo:0,0?q=business+near+city     //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom



3、路径规划
  
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");     Intent it = new Intent(Intent.ACTION_VIEW, uri);     startActivity(it);     //where startLat, startLng, endLat, endLng are a long with 6 decimals        //like:50.123456 



4、打电话
(1)叫出拨号程序
  
Uri uri = Uri.parse("tel:0800000123");     Intent it = new Intent(Intent.ACTION_DIAL, uri);     startActivity(it);
 
(2)直接打电话出去 
  
Uri uri = Uri.parse("tel:0800000123");     Intent it = new Intent(Intent.ACTION_CALL, uri);     startActivity(it);     //用這個,要在 AndroidManifest.xml 中,加上     //<uses-permission id="android.permission.CALL_PHONE" />



5、传送SMS/MMS
(1)调用短信程序
   Intent it = new Intent(Intent.ACTION_VIEW, uri); 
   it.putExtra("sms_body", "The SMS text");  
   it.setType("vnd.android-dir/mms-sms"); 
   startActivity(it);
(2)传送消息
  
Uri uri = Uri.parse("smsto://0800000123");     Intent it = new Intent(Intent.ACTION_SENDTO, uri);     it.putExtra("sms_body", "The SMS text");     startActivity(it); 

(3)传送 MMS 
  
Uri uri = Uri.parse("content://media/external/images/media/23");     Intent it = new Intent(Intent.ACTION_SEND);      it.putExtra("sms_body", "some text");      it.putExtra(Intent.EXTRA_STREAM, uri);     it.setType("image/png");      startActivity(it);



6、邮件
(1)传送 Email
  
Uri uri = Uri.parse("mailto:xxx@abc.com");     Intent it = new Intent(Intent.ACTION_SENDTO, uri);     startActivity(it);    Intent it = new Intent(Intent.ACTION_SEND);     it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");     it.putExtra(Intent.EXTRA_TEXT, "The email body text");     it.setType("text/plain");     startActivity(Intent.createChooser(it, "Choose Email Client"));    Intent it=new Intent(Intent.ACTION_SEND);       String[] tos={"me@abc.com"};       String[] ccs={"you@abc.com"};       it.putExtra(Intent.EXTRA_EMAIL, tos);       it.putExtra(Intent.EXTRA_CC, ccs);       it.putExtra(Intent.EXTRA_TEXT, "The email body text");       it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");       it.setType("message/rfc822");       startActivity(Intent.createChooser(it, "Choose Email Client"));

(2)传送附件
  
Intent it = new Intent(Intent.ACTION_SEND);     it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");     it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");     sendIntent.setType("audio/mp3");     startActivity(Intent.createChooser(it, "Choose Email Client"));



7、播放多媒体
      
Uri uri = Uri.parse("file:///sdcard/song.mp3");         Intent it = new Intent(Intent.ACTION_VIEW, uri);         it.setType("audio/mp3");         startActivity(it);        Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");         Intent it = new Intent(Intent.ACTION_VIEW, uri);         startActivity(it);



8、Market 相关
(1)寻找某个应用
       
Uri uri = Uri.parse("market://search?q=pname:pkg_name");         Intent it = new Intent(Intent.ACTION_VIEW, uri);          startActivity(it);          //where pkg_name is the full package path for an application

(2)显示某个应用的相关信息
       
Uri uri = Uri.parse("market://details?id=app_id");          Intent it = new Intent(Intent.ACTION_VIEW, uri);         startActivity(it);          //where app_id is the application ID, find the ID           //by clicking on your application on Market home           //page, and notice the ID from the address bar

(3)Uninstall 应用程序
      
 Uri uri = Uri.fromParts("package", strPackageName, null);         Intent it = new Intent(Intent.ACTION_DELETE, uri);           startActivity(it); 

热点排行