Android Intent 意图

Intent 意图




打开新界面

新的界面要AndroidManifest.xml加东西 Application最下面Add

Intent intent = new Intent(MainActivity.this, com.example.misss.Mainnew.class); //(环境, 包名->新界面名)
startActivity(intent); /*开始行动*/




隐式意图 启动界面 (可以打开另一个项目的隐式界面)

  • 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。
  • 隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。
  • 为什么用隐式intent:因为有时需要调用系统的Activity,或者说希望用户不用默认的而用自己应用时,就会将自己的设置为与默认应用相同的过滤器,当用户选择时,自己的应用就可以供用户选择。

隐式Intent的Activity:AndroidManifest.xml配置

<activity
    <intent-filter>
        <action android:name="com.example.inten_y.sssb"/>            隐式启动的界面 名称
        <category android:name="android.intent.category.DEFAULT"/>   隐式启动的界面 一般是
        <data android:mimeType="aa/bb" android:scheme="itheima" />   隐式启动的界面 数据设定
    <intent-filter>
    ...

启动隐式Intent代码:

Intent intent = new Intent();
intent.setAction("com.example.inten_y.sssb"); //隐式启动的界面名
intent.addCategory("android.intent.category.DEFAULT"); //隐式启动模式?
//intent.setData(Uri.parse("itheima:"+110)); //设置数据,通常是系统界面需要 要和要调用的界面的清单文件中的设置一样
//intent.setType("aa/bb"); .//设置数据类型 要和要调用的界面的清单文件中的设置一样
//intent.setDataAndType(Uri.parse("itheima:"+110),"aa/bb"); //两样需要同时设置时需要用这个方法
startActivity(intent);

隐式意图的界面获取数据:

Intent intent = getIntent();
Uri data = intent.getData();
String scheme = data.getScheme();
...




界面间的数据传递

打开新界面并发送数据:

Intent intent = new Intent();
intent.setClass(MainActivity.this, newmain.class); /*环境,新界面*/
intent.putExtra("key","Value");   /*放入(名称 值)*/
Bundle bundle = new Bundle();
bundle.putString("a", "omg");
bundle.putInt("b", 86);
intent.putExtra("Bundle1", bundle);   /*放入(Bundle对象)*/
//startActivity(intent);
startActivityForResult(intent,1);

新界面中接收数据:

//获取传递的值
Intent intent = getIntent();                     /*获取传递的意图*/
String value = intent.getStringExtra("key");     /*根据名称取值*/
Bundle bundle = intent.getBundleExtra("Bundle1");/*获取Bundle对象*/
String strName = bundle.getString("a");
Integer nValue = bundle.getInt("b");
//设置返回的数据,并关闭新界面
Intent intent = new Intent();
intent.putExtra("return", "返回去的值");
setResult(10, intent); //返回给调用者
finish(); //关闭界面

原界面接收打开的新界面关闭时的返回数据

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode ==1 && resultCode == 10) String s = data.getStringExtra("return"); //接收数据
    super.onActivityResult(requestCode, resultCode, data);
}




打电话

//Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel://110"));//精简版
Intent intent = new Intent();              // Intent::意图 -> 意图干嘛 -> 意图打电话
intent.setAction(Intent.ACTION_DIAL);      //想要做什么->打电话-转到拨号
//intent.setAction(Intent.ACTION_CALL);    //打电话-直接打( 需要权限android.permission.CALL_PHONE )
intent.setData(Uri.parse("tel://"+119));   //打哪个电话->这个119          Uri::统一的资源标示符(网络地址)
startActivity(intent);//开始行动




发短信

打开发送短信的界面

Intent intent = new Intent();
intent.setAction("android.intent.action.SEND"); //打开系统短信界面
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("text/plain");
intent.putExtra("sms_body","你好啊,最近过得怎样"); //传递短信内容
startActivity(intent);

直接发短信: (需要权限 android.permission.SEND_SMS )

SmsManager smsManager = SmsManager.getDefault();
ArrayList<String> divideMessages = smsManager.divideMessage("发送的短信内容,太长就下面的for循环截断,分成几条短信发送,中文最多70个字符,英文140个?还是160?");
for(String div : divideMessages){ //自动截断处理
    smsManager.sendTextMessage("12315", null,div,null,null);//(发送给谁,服务中心号码,短信内容,发送成功的广播,发送失败的广播)
}




拍照与录像

图片描述




未解之谜

//这是什么?????????注释的这些                
//intent.setClass(MainActivity.this, MainActivity.class);    //根据包名,类名,来唯一确定Activity
//intent.setClassName(MainActivity.this, "com.example.lauchintenproj.MainActivity"); //字符串来定位
//intent.setClassName("com.example.lauchintenproj", "com.example.lauchintenproj.MainActivity");
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值