Android 入门之Intent应用
1、顯示Intent
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
startActivity(intent);
2、隱式Intent
打開AndroidMainfest.xml,添加如下代碼(每個Intent中只能指定一個action,但能指定多個category)
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<category?android:name="android.intent.category.DEFAULT"/>
<category?android:name="com.example.activitytest.MY_CATEGORY"/>//添加自定義的Category()
</intent-filter>
</activity>
Intent intent=new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");//添加自定義的Category
startActivity(intent);
3、調用系統(tǒng)瀏覽器打開網頁
Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
與此對應,還可以在<intent-filter>標簽中配置一個<data>標簽,用于更精準的指定當前活動能夠響應什么類型的數據
android:scheme。用于指定數據的協(xié)議部分,如上例中的 http 部分。
android:host。用于指定數據的主機名部分,如上例中的www.baidu.com.。
android:port。用于指定數據的端口部分,一般緊隨在主機名之后。
android:path。用于指定主機名和端口之后的部分,如一段網址中跟在域名之后的內容。
android:mimeType。用于指定可以處理的數據類型,允許使用通配符的方式進行指定。
只有<data>標簽中指定的內容和Intent中攜帶的Data完全一致時,當前活動才能夠響應該Intent
例如:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category?android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
1,web瀏覽器
Uri?uri=?Uri.parse("http://kuikui.javaeye.com");
returnIt?=?new?Intent(Intent.ACTION_VIEW,?uri);
2,地圖
Uri?mapUri?=?Uri.parse("geo:38.899533,-77.036476");
returnIt?=?new?Intent(Intent.ACTION_VIEW,?mapUri);
3,調撥打電話界面
Uri?telUri?=?Uri.parse("tel:100861");
returnIt?=?new?Intent(Intent.ACTION_DIAL,?telUri);
4,直接撥打電話
Uri?callUri?=?Uri.parse("tel:100861");
returnIt?=?new?Intent(Intent.ACTION_CALL,?callUri);
5,卸載
Uri?uninstallUri?=?Uri.fromParts("package",?"xxx",?null);
returnIt?=?new?Intent(Intent.ACTION_DELETE,?uninstallUri);
6,安裝
Uri?installUri?=?Uri.fromParts("package",?"xxx",?null);
returnIt?=?new?Intent(Intent.ACTION_PACKAGE_ADDED,?installUri);
7,播放
Uri?playUri?=?Uri.parse("file:///sdcard/download/everything.mp3");
returnIt?=?new?Intent(Intent.ACTION_VIEW,?playUri);
8,掉用發(fā)郵件
Uri?emailUri?=?Uri.parse("mailto:shenrenkui@gmail.com");
returnIt?=?new?Intent(Intent.ACTION_SENDTO,?emailUri);
9,發(fā)郵件
returnIt?=?new?Intent(Intent.ACTION_SEND);
String[]?tos?=?{?"shenrenkui@gmail.com"?};
String[]?ccs?=?{?"shenrenkui@gmail.com"?};
returnIt.putExtra(Intent.EXTRA_EMAIL,?tos);
returnIt.putExtra(Intent.EXTRA_CC,?ccs);
returnIt.putExtra(Intent.EXTRA_TEXT,?"body");
returnIt.putExtra(Intent.EXTRA_SUBJECT,?"subject");
returnIt.setType("message/rfc882");
Intent.createChooser(returnIt,?"Choose?Email?Client");
10,發(fā)短信
Uri?smsUri?=?Uri.parse("tel:100861");
returnIt?=?new?Intent(Intent.ACTION_VIEW,?smsUri);
returnIt.putExtra("sms_body",?"shenrenkui");
returnIt.setType("vnd.android-dir/mms-sms");
11,直接發(fā)郵件
Uri?smsToUri?=?Uri.parse("smsto://100861");
returnIt?=?new?Intent(Intent.ACTION_SENDTO,?smsToUri);
returnIt.putExtra("sms_body",?"shenrenkui");
12,發(fā)彩信
Uri?mmsUri?=?Uri.parse("content://media/external/images/media/23");
returnIt?=?new?Intent(Intent.ACTION_SEND);
returnIt.putExtra("sms_body",?"shenrenkui");
returnIt.putExtra(Intent.EXTRA_STREAM,?mmsUri);
returnIt.setType("image/png");
3、向下一個活動傳遞數據
傳遞數據:
String data="Hello RequestActivity";
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
intent.putExtra("etra_data",data);
startActivity(intent);
接收數據
Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("ResultActivity",data);
4、返回數據給上一個活動
請求數據:
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
startActivityForResult(intent,1);
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case 1:
if(resultCode==RESULT_OK){
String returnedData=data.getStringExtra("data_return");
Log.d("RequestActivity",returnedData);
}
break;
default:
}
}
返回數據:(通過返回按鈕返回數據,使用onBackPressed方法)
Intent intent=new Intent();
intent.putExtra("data_return","Hello");
setResult(RESULT_OK,intent);
finish;
5、啟動活動的最佳寫法
第一頁面:
Intent intent=new Intent(RequestActivity.this,ResultActivity.class);
intent.putExtra("data",data);
startActivity(intent);
第二頁面:
啟動活動不清楚傳遞哪些數據的時候:
public static void actionStart(Context context,String data){
Intent intent=new Intent(context,ResultActivity.class);
intent.putExtra("data",data);
context.startActivity(intent);
}
點擊事件調用:
ResultActivity.actionStart(RequestActivity.this,"data");
總結
以上是生活随笔為你收集整理的Android 入门之Intent应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android入门之常用控件
- 下一篇: android sina oauth2.