Intent的学习笔记

Intent的常用方法依次如下:
1.向上一个活动返回消息
2.使用显示Intent进行活动中的跳转
3.使用隐式Intent进行活动间的跳转,并用Intent向跳转到的活动传递信息
4.打开网页
5.直接拨打电话
6.跳转到拨电话的界面并且已经录入要打的电话的号码7.发送广播
8.使用隐式Intent判断有没有匹配的Activity
(注意:单纯的Activity在Mainifest.xml中的注册省略未写出

这里写图片描述

1.向上一个活动返回消息

从第一个Activity到第二个Activity后,按退出键,使用Intent可以将被销毁Activity(第二个Activity)的信息传给一个活动:

在FrstActivity中写下如下代码:

// 向上一个活动返回消息
public void click2(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra(“name”, str);
startActivityForResult(intent, 1);
}

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {

        case 1:
            if (resultCode == RESULT_OK) {
                String str = data.getStringExtra("name");
                toast(str);
            }
            break;
        default:

        }

在FirstActivity对应的布局first.xml中写下如下代码:

 <Button 
        android:text="去第二界面(第二界面可以返回信息)"
        android:onClick="click2"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"/>

在第二界面的活动SecondActivity中写下代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
        Intent intent = new Intent();
        intent.putExtra("name", "Hello FirstActivity!");
        setResult(RESULT_OK, intent);
    }

在SecondActivity时按返回键会在FirstActivity中收到消息,这是SecondActivity向FirstActivity传递的信息:

这里写图片描述

2.使用显示Intent进行活动中的跳转:

在FrstActivity中写下如下代码:

// 显示Intent
    public void click3(View v) {
        Intent intent = new Intent(FirstActivity.this, ThirdActivity.class);
        startActivity(intent);
    }

在first.xml中加入:

<Button 
        android:text="去第三界面(使用显示Intent)"
        android:onClick="click3"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"/>

去第三界面:
这里写图片描述

3.使用隐式Intent进行活动间的跳转

使用隐式Intent进行活动间的跳转,并用Intent向跳转到的活动传递信息:
在FrstActivity中写下如下代码,这里”com.example.tsst19.MY_ACTION”和”com.example.tsst19.MY_CATEGORY是自定义的,需要在AndroidManifest.xml进行自定义:

// 隐式Intent,并向下一个活动传递消息
    public void click4(View v) {
        Intent intent = new Intent("com.example.tsst19.MY_ACTION");
        intent.addCategory("com.example.tsst19.MY_CATEGORY");
        intent.putExtra("name2", "你好,第四界面");
        startActivity(intent);
    }

在first.xml中加入:

<Button 
        android:text="去第四界面(使用隐式Intent,并传递信息)"
        android:onClick="click4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

AndroidManifest.xml中加入以下代码:

 <activity android:name=".FourthActivity">
            <intent-filter >
                <action android:name="com.example.tsst19.MY_ACTION"/>
                <category android:name="android.intent.category.DEFAULT"/> <--!隐式intent必须有该句-->
                <category android:name="com.example.tsst19.MY_CATEGORY"/>
            </intent-filter>
        </activity>

4.打开网页

例如百度首页:
FirstActivity中加入代码:

// 打开网页
    public void webClick(View v) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://www.baidu.com"));
        startActivity(intent);
    }

first.xml加入如下代码:

<Button 
        android:text="打开网页(百度首页)"
        android:onClick="webClick"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>  

点击按钮后的结果:
这里写图片描述

5.直接拨打电话
例如1008611:
需要打电话的权限,在AndroidManifest.xml中加入:

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

在FirstActivity中加入代码:

// 直接打电话
    public void callClick(View v) {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:1008611"));
        startActivity(intent);
    }

在first.mxl中加入:

<Button 
        android:text="直接打电话(1008611)"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="callClick"/>

点击按钮后的效果:
这里写图片描述

6.跳转到拨电话的界面并且已经录入要打的电话的号码

以10086为例
(注意:此处不需要拨打电话的权限,与直接拨打电话的区别是在FirstActivity中的Intent.ACTION_CALL与Intent.ACTION_DIAL)
FirstActivty加入代码:

// 去打电话界面,准备打电话
    public void dailClick(View v) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse("tel:10086"));
        startActivity(intent);
    }

first.xml中加入代码:

<Button 
        android:onClick="dailClick"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="去电话界面 (准备拨打10086)"/>

按下按钮后的效果:
这里写图片描述

7.发送广播

在FirstActivty中加入代码:

// 广播
    public void broadcastClick(View v) {
        Intent intent = new Intent("com.example.tsst19.MY_BROADCAST");
        intent.putExtra("data", "这是一条广播");
        sendBroadcast(intent);
    }

first.xml中加入:

<Button 
        android:onClick="broadcastClick"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送一条广播"/>

新建一个广播接受器:类 MyBroadcast,接受广播,并输出接受到的消息:

package com.example.tsst19;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyBroadcast extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String str = intent.getStringExtra("data");
        Toast.makeText(context, "接受到广播信息:\n" + str, Toast.LENGTH_SHORT).show();

    }

}

在Mainifest.xml中对广播接受器进行注册:

<receiver android:name=".MyBroadcast">
            <intent-filter >
                <action android:name="com.example.tsst19.MY_BROADCAST"/>
            </intent-filter>
        </receiver>

按下按钮后的结果:
这里写图片描述


8.使用隐式Intent判断有没有匹配的Activity的代码片段

使用隐式Intent判断有没有匹配的Activity的代码片段,添加这些就不会在担心因为没有不匹配的Activity而程序崩溃了:

        Intent intent=new Intent();
        intent.setAction("com.android.activity.MY_ACTION" );
        intent.addCategory("com.android.activity.htw2");
        PackageManager packageManager = getPackageManager();
        List<ResolveInfo> activitis = packageManager.queryIntentActivities(intent, 0);
        boolean isIntentSafe = activitis.size()>0;
        if(isIntentSafe)
        startActivity(intent);

9.调用系统控件的总结

总结一下Intent使用URi调用系统控件的方式:
1,调web浏览器
Uri myBlogUri = Uri.parse(” http://xxxxx.com “);
returnIt = new Intent(Intent.ACTION_VIEW, myBlogUri);
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,调用发邮件
Uri emailUri = Uri.parse(“mailto:xxxx@gmail.com”);
returnIt = new Intent(Intent.ACTION_SENDTO, emailUri);
9,发邮件
returnIt = new Intent(Intent.ACTION_SEND);
String[] tos = { “xxxx@gmail.com” };
String[] ccs = { “xxxx@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,发短信
Uri smsUri = Uri.parse(“tel:100861”);
returnIt = new Intent(Intent.ACTION_VIEW, smsUri);
returnIt.putExtra(“sms_body”, “yyyy”);
returnIt.setType(“vnd.android-dir/mms-sms”);
11,直接发邮件
Uri smsToUri = Uri.parse(“smsto://100861”);
returnIt = new Intent(Intent.ACTION_SENDTO, smsToUri);
returnIt.putExtra(“sms_body”, “yyyy”);
12,发彩信
Uri mmsUri = Uri.parse(“content://media/external/images/media/23”);
returnIt = new Intent(Intent.ACTION_SEND);
returnIt.putExtra(“sms_body”, “yyyy”);
returnIt.putExtra(Intent.EXTRA_STREAM, mmsUri);
returnIt.setType(“image/png”);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值