Android Intent 意图

来源:互联网 发布:淘宝类目在哪里修改 编辑:程序博客网 时间:2024/05/22 00:14

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(); //关闭界面

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

@Overrideprotected 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");
0 0
原创粉丝点击