Android入門之Intent

1、使用Intent連接Activity

       說明:1)新建一個SecondActivity.java文件,並新建一個相應的xml文件。在AndroidManifest.xml文件中</activity>下面一行,<appliction>內部添加:

<activity android:name=”.SecondActivity”></activity>                                    

       2)在main.xml文件中新建一個Button,在MainActivity.java文件中,設置該button的setOnClickListener,在監聽器中添加:

startActivity(new Intent(MainActivity.this,SecondActivity.class));                 

       解釋:startActivity(newIntent(MainActivity.this,SecondActivity.class)); 等同於:

Intent intent = new Intent(MainActivity.this,SecondActivity.class);              

startActivity(intent);                                                                                              

Intent類的實例還可以通過setData方法、Uri.parse方法、setType方法傳入數據。

      

2、使用Intent返回結果

       說明:1)調用一個Activity並等待從此Activity返回結果,需要用到startActivityForResult方法,除了傳入Intent對象還需要請求碼參數。請求碼只是一個用來標識正在調用的Activity的整數值,但是是必須的。

       2)爲了使被調Activity可以返回一個值給調用它的Activity,可以通過Intent對象的setData方法回調數據。

       3)在調用者Activity中必須要實現onActivityResult方法,其中的resultCode對比的參數是被調用者Activity中的setResult方法設置的結果碼(RESULT_OK或RESULT_CANCEL)

 

public class MainActivity extends Activity {
	public int REQUEST_CODE = 1;//請求碼僅僅是一個整數值,用來標識正在調用的活動,這是必須的
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button toSecond = (Button)super.findViewById(R.id.btn_toSecond);
		toSecond.setOnClickListener(new View.OnClickListener() {			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(MainActivity.this,SecondActivity.class);
				startActivityForResult(intent, REQUEST_CODE);
			}
		});
	}
	
	public void onActivityResult(int resquestCode, int resultCode,Intent data){
		if (resquestCode == REQUEST_CODE) {
			if (resultCode == RESULT_OK) {
				Toast.makeText(this, data.getData().toString(), 
						Toast.LENGTH_SHORT).show();
			}
		}
	}
}
public class SecondActivity extends Activity {
	private EditText username;
	private Button btn_ok;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);	
		btn_ok = (Button)findViewById(R.id.btn_ok);		
		btn_ok.setOnClickListener(new View.OnClickListener() {		
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent data = new Intent();		
				username = (EditText)findViewById(R.id.username);
				data.setData(Uri.parse(username.getText().toString()));
				setResult(RESULT_OK,data);
				finish();
			}
		});
	}
}

3、使用Intent傳遞數據

       方法一:

【存】

Intent intent = new Intent();                

intent.putExtra(“age”,25);                   

intent.putExtra(“name”,”Logen”);  

【取】

getIntent().getIntExtra(“age”,0);        

getIntent().getStringExtra(“name”); 

       方法二:

【存】

Bundle extras = new Bundle();                

extras.putInt(“price”,250);                         

extras.putString(“supplier”,”Microfote”); 

【 取】

getIntent().getInt(“price”);                         

getIntent().getString(“supplier”);            

       方法三:

【存】

Intent i = new Intent();

i.setData(Uri.parse(“Something passed backto main activity”));

【取】

Intent data = new Intent();

data.getData().toString();


4、使用Intent調用內置應用程序

說明:

ACTION_DIAL和ACTION_CALL的區別:

1,調撥打電話界面並播下指定號碼,但沒有打出
Intent i = new Intent(android.conatent.Intent.ACTION_DIAL,Uri.parse(“tel:10086”)); 

startActivity(i);

2.直接撥打電話 
Intent i = new Intent(android.conatent.Intent.ACTION_CALL,Uri.parse(“tel:10086”)); 

startActivity(i);

 

其他的:

❑ ACTION_ANSWER

打開一個Activity來處理來電。目前,它是被本地的電話撥號工具處理。

 

❑ ACTION_CALL

啓動電話撥號工具,並立即用數據URI中的號碼初始化一個呼叫。一般來說,如果可能的話,它認爲是比使用Dial_Action好的一種方式。

 

❑ ACTION_DELETE

啓動一個Activity來讓你刪除儲存在URI位置的數據入口。

 

❑ ACTION_DIAL

啓動一個電話撥號程序,使用預置在數據URI中的號碼來撥號。默認情況下,它是由Android本地的電話撥號工具處理。這個撥號工具能規範多數的號碼;舉個例子,tel:555-1234和tel:(212)555 1212都是有效的號碼。

 

❑ ACTION_EDIT

請求一個Activity來編輯URI處的數據。

 

❑ ACTION_INSERT

打開一個能在數據域的特定遊標處插入新項目的Activity。當以子Activity方式調用時,它必須返回新插入項目的URI。

 

❑ ACTION_PICK

啓動一個子Activity來讓你從URI數據處挑選一個項目。當關閉時,它必須返回指向被挑選項目的URI。啓動的Activity取決於要挑選的數據;例如,傳入content://contacts/people會引發本地的聯繫人列表。

 

❑ ACTION_SEARCH

啓動一個UI來執行搜索。在Intent的數據包裏使用SearchManager.QUERY鍵值來提供搜索內容的字符串。

 

❑ ACTION_SENDTO

啓動一個Activity來給URI中的指定聯繫人發送一個消息。

 

❑ ACTION_SEND

啓動一個Activity來發送特定的數據(接收者經由解析Activity來選擇)。使用setType來設置Intent的類型爲傳輸數據的mime類型。

數據本身依賴於類型使用EXTRA_TEXT或EXTRA_STREAM來儲存。在e-mail的情況下,Android本地應用程序還可以接受使用EXTRA_EMAIL, EXTRA_CC,EXTRA_BCC, 和EXTRA_SUBJECT鍵值的extras。

 

❑ ACTION_VIEW

最通用的動作。View動作要求Intent URI中的數據以最合理的方式顯示。不同的應用程序將處理View請求,依賴於URI中的數據。一般的,http:地址會在瀏覽器中打開,tel:地址會在撥號工具中打開並呼叫號碼,geo:地址會在Google地圖應用程序中顯示,聯繫人內容會在聯繫人管理器中顯示。

 

❑ ACTION_WEB_SEARCH

打開一個Activity,執行基於數據URI中文本的網頁搜索。

 示例:

在main.xml中定義三個按鈕,並設置他們的onClick屬性:

<Button
	android:id="@+id/btn_webbrowser"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:onClick="onClickWebBrowser"
	android:layout_alignParentTop="true"
	android:layout_centerHorizontal="true"
	android:text="Web Browser" />

<Button
	android:id="@+id/btn_makecalls"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:onClick="onClickMakeCalls"
	android:layout_below="@id/btn_webbrowser"
	android:layout_centerHorizontal="true"
	android:text="Make calls" />

<Button
	android:id="@+id/btn_googleMap"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:onClick="onClickShowMap"
	android:layout_below="@id/btn_makecalls"
	android:layout_centerHorizontal="true"
	android:text="Show GoogleMap" />

在MainActivity.java中的public類中添加下面的方法:

public void onClickWebBrowser(View v){
	Intent i = new Intent(android.content.Intent.ACTION_VIEW,
			Uri.parse("http://www.google.com"));
	startActivity(i);
}

public void onClickMakeCalls(View v){
	Intent i = new Intent(android.content.Intent.ACTION_DIAL,
			Uri.parse("tel:+8615989159661"));
	startActivity(i);
}

public void onClickShowMap(View v){
	Intent i = new Intent(android.content.Intent.ACTION_VIEW,
			Uri.parse("geo:37.827501,-122.481670"));
	startActivity(i);
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章