概述
使用ComponentName属性传递数据
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
//创建Component对象用来实现页面跳转
//其中第一个参数是该包的名字,第二个参数是即将跳转的那个类名
ComponentName componentName = new ComponentName("com.example.intentd","com.example.intentd.MainActivity2");
intent.setComponent(componentName);
startActivity(intent);
}
});
https://www.cnblogs.com/shuiyin/p/6550999.html
Action和Data属性
Action:指定要执行的动作
Data:指定具体的数据
一般一起使用!!!
下面是一个实例:两个按钮点击第一个按钮拨打电话,点击第二个按钮发送短信。
package com.example.intent2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button phone;
Button message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
phone = findViewById(R.id.phone);
message = findViewById(R.id.message);
phone.setOnClickListener(l);
message.setOnClickListener(l);
}
View.OnClickListener l = new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
Button b = (Button)view;
switch(b.getId()){
case R.id.phone:
intent.setAction(intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:15164558415"));
startActivity(intent);
break;
case R.id.message:
intent.setAction(intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:15164558415"));
intent.putExtra("sms_body","这是一条短信信息");
startActivity(intent);
break;
}
}
} ;
}
接下来要在Mainifest中设置访问权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
Action和Category属性
对执行动作的类别进行指定
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction(intent.ACTION_MAIN);
intent.addCategory(intent.CATEGORY_HOME);
startActivity(intent);
}
});
Extras属性
向Intent中添加附加信息,以键值对保存
putExtras和getExtras
Flags属性
指定如何去启动另一个Activity,指定程序启动后如何处理
Task:以栈的形式聚集在一起的Activity集合,用来保存Activity
例:让Activity不在历史栈中保留,用户一旦离开立即关闭。
Intent的种类
显示Intent:
隐式Intent:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction(intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
});
Intent过滤器
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction(intent.ACTION_VIEW);
startActivity(intent);
}
});
<activity android:name=".MainActivity2">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>