Android开发—Activiy之间的跳转

Android开发—Activiy之间的跳转

Intent介绍

Intent被称为意图,是程序中各组件进行交互的一种方式,它可以指定当前组件要执行的动作,也可以在不同组件之间进行数据传递。
一般用于启动Activity、Service以及发送广播等。根据开启目标组件的方式不同,Intent被分为两种:显示意图和隐式意图。

显式意图可以直接通过名称开启指定的目标组件。
隐式意图通过指定action和category等属性,系统进行分析后寻找目标Activity。

显式示例:

//创建一个Intent对象,其中第一个参数为Context表示当前的Activity对象,第二个参数表示要启动的目标Activity。
Intent intent = new Intent(this, Activity02.class); 
startActivity(intent);  //使用startActivity()方法启动目标组件。

隐式示例:

Intent intent = new Intent();
//设置action动作,当与清单文件中的action相匹配时启动目标组件。
intent.setAction("android.intent.action.VIEW");
startActivity(intent); 
<activity android:name=".MainActivity">
      <intent-filter>
      //设置action动作,当与代码中的action与该action相匹配时启动该组件。
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
</activity>

实战练习:

做一个页面,里面有几个按钮,可以实现打开网页、打电话、发短信等

一、在【activity_main.xml】页面添加按钮:
<TableRow>
<Button android:onClick="click_Web" style="@style/MyStyle" android:text="1调web浏览器 "/>
<Button android:onClick="click_Geo" style="@style/MyStyle" android:text="2调地图"/>
</TableRow>
<TableRow>
<Button android:onClick="click_DiaL" style="@style/MyStyle" android:text="3调拨打电话界面" />
<Button android:onClick="click_Call" style="@style/MyStyle" android:text="4直接拨打电话" />
</TableRow> 
<TableRow>
<Button android:onClick="click_Delete" style="@style/MyStyle" android:text="5卸载" />
<Button android:onClick="click_Added" style="@style/MyStyle" android:text="6安装" />
</TableRow>
<TableRow>
<Button android:onClick="click_SenTo" style="@style/MyStyle" android:text="7调用发邮件" />
<Button android:onClick="click_Sms" style="@style/MyStyle" android:text="8发短信" />
</TableRow>

提示:记得把页面布局换成TableLayout

二、为了layout界面代码重用,在【styles.xml】中加入自定义样式:
 <style name="MyStyle">
        <!--我定义的按钮样式-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_marginLeft">4dp</item>
        <item name="android:layout_marginStart">4dp</item>
        <item name="android:layout_marginTop">4dp</item>
        <item name="android:textColor">#ff0000</item>
    </style>d:textColor"> #ff0000</item>
三、在主页面【MainActivity.java】添加各按钮响应事件:
public void click_Web(View v) {
Intent intent = new Intent();
//设置动作为android.intent.action.VIEW
intent.setAction("android.intent.action.VIEW"); 
//设置要打开的网址
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
}
// 2地图
public void click_Geo(View v) {
Intent intent = new Intent();
//设置动作为android.intent.action.VIEW
intent.setAction("android.intent.action.VIEW"); 
intent.setData(Uri.parse("geo:38.899533,-77.036476"));
startActivity(intent);
}
// 3调拨打电话界面
public void click_DiaL(View v) {
Uri telUri = Uri.parse("tel:100861");
Intent intent = new Intent(Intent.ACTION_DIAL, telUri);
startActivity(intent);
}
// 4直接拨打电话
public void click_Call(View v) {
Uri telUri = Uri.parse("tel:100861");
Intent intent = new Intent(Intent.ACTION_CALL, telUri);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
startActivity(intent);
} }
// 5卸载
public void click_Delete(View v){
Uri uninstallUri = Uri.fromParts("package", "com.example.administrator.openbrowsertest", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri);
startActivity(intent);
}
// 6安装
public void click_Added(View v) {
Uri installUri = Uri.fromParts("package", "com.example.administrator.openbrowsertest", null);
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);
startActivity(intent);
}
//7调用发邮件
public void click_SenTo(View v) {
Uri emailUri = Uri.parse("mailto:Da_xiong@163.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri);
startActivity(intent);
}
//8发短信
public void click_Sms(View v) {
Log.v("activity传数据测试");
String phoneNumber = "100861";
String message = "11111";
Intent intent2 = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + phoneNumber));
intent2.putExtra("sms_body", message);
startActivity(intent2);
}

坑1:拨打电话,需要在【Manifestx.xml】中添加Permission权限
添加位置:在<manifest之后,<application之前;

<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.INTERNET"/>

坑2:拨打电话还需要开启手机或模拟器里的应用权限,有的默认关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雄不是大熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值