实时搜索: android intent 哪个包

android intent 哪个包

572条评论 4215人喜欢 5715次阅读 750人点赞
发送一个意图到其他应用程序
在这节课的目的是创建一个明确的意图是什么样的,因为 Intent指定确切的应用程序组件的目的应该是给予。然而,意图也可以是隐式的,在这种情况下 Intent没有指定所需的组件,但允许任何应用程序安装在设备响应目的只要满足规格的元数据中指定的行为是不同的吗 Intent参数。有关更多信息,请参见类有关互动与其他应用程序.
注意:的引用 DisplayMessageActivity将产生一个错误如果你使用IDE,比如Eclipse,因为类并不存在。忽略这个错误现在;你会创建类很快。
一个意图不仅允许您启动另一个活动,但它可以携带一堆数据到活性等...

Android中Intent与Bundle 在传值时有什么不同:   http://blog、csdn、net/garretly 首发

  转载注明出处

  /**
  * 测试android中直接用Intent传值与Bundle传值的区别
  *
  * 欢迎大家提问
  * by garretly
  * mail garretly@gmail.com
  */

  前一阵子逛EOE 看有有人提问 Intent 和Bundle有什么样的区别

  既然Intent可以传值 为什么还搞个Bundle来个传值出来

  举个例子先 我现在要从A界面 跳转到B界面或者C界面
  这样的话 我就需要写2个Intent 如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle 直接把值先存里边 然后再存到Intent中 不就更简洁吗?

  public class A extends Activity {
  private Button btn;
  private TextView tv;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.a);
  
  btn = (Button) findViewById(R.id.btn1);
  tv =(TextView) findViewById(R.id.tv1);
  
  tv.setText("Activity----A");
  
  btn.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
  next();
  
  }
  });
  
  }
  private void next(){
  Intent i = new Intent();
  i.setClass(this, B.class);
  i.putExtra("int", 1000);
  i.putExtra("String", "测试");
  i.putExtra("char", 'c');
  startActivity(i);
  finish();
  }
  
  }

  

  public class B extends Activity {
  private Button btn;
  private TextView tv;

  int temp1;
  String temp2;
  char temp3;

  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.b);

  btn = (Button) findViewById(R.id.btn2);
  tv = (TextView) findViewById(R.id.tv2);

  getI(getIntent());

  /**
  * 说一下 这里为什么写View.OnClickListener()
  * 因为在调用OnClickListener()会有多种OnClickListener
  * ()对象,因此我在这里不通过导包来使用OnClickListener
  * ()对象,而是通过在对象前添加View来告知编译器我调用的是哪个OnClickListener()对象
  */
  btn.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View v) {
  next();

  }
  });

  }

  // 获取从A中传来的数据
  private void getI(Intent i) {
  // int temp1 = i.getIntExtra("int", 0);
  // String temp2 = i.getStringExtra("String");
  // char temp3 = i.getCharExtra("char", 'a');
  temp1 = i.getIntExtra("int", 0);
  temp2 = i.getStringExtra("String");
  temp3 = i.getCharExtra("char", 'a');
  System.out.println(temp1);
  System.out.println(temp2);
  System.out.println(temp3);

  tv.setText("Activity----B" +"/n"+
  "int=======" + temp1 +"/n"+
  "String=======" + temp2+"/n"
  + "char========" + temp3);
  }

  /**
  * 现在要将从A中传过来的值 在传到C中去,那么 就要将temp1 temp2 temp3 改为全局变量 并且要填入一些B中的属性
  */
  private void next() {
  Intent i = new Intent();
  i.setClass(this, C.class);
  i.putExtra("int", temp1);
  i.putExtra("String", temp2);
  i.putExtra("char", temp3);
  // 同时我现在还要将B中的一些属性传给C
  i.putExtra("boolean", true);
  startActivity(i);
  finish();
  }

  }

  

  public class C extends Activity {
  private Button btn;
  private TextView tv;
  
  int temp1;
  String temp2;
  char temp3;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.c);
  
  btn = (Button) findViewById(R.id.btn3);
  tv =(TextView) findViewById(R.id.tv3);
  //getIntent() 是获取从哪里启动这个activity的Intent对象
  getI(getIntent());
  
  
  btn.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
  next();
  
  }
  });
  
  }
  //获取从C中传来的数据
  private void getI(Intent i){
  // int temp1 = i.getIntExtra("int", 0);
  // String temp2 = i.getStringExtra("String");
  // char temp3 = i.getCharExtra("char", 'a');
  temp1 = i.getIntExtra("int", 0);
  temp2 = i.getStringExtra("String");
  temp3 = i.getCharExtra("char", 'a');
  boolean temp4 = i.getBooleanExtra("boolean", false);
  tv.setText("Activity----C"+"/n"+
  "int======="+temp1+"/n"+
  "String======="+temp2+"/n"+
  "char========"+temp3+"/n"+
  "boolean========"+temp4
  );
  }
  
  private void next(){
  Intent i = new Intent();
  i.setClass(this, com.garretly.b.A.class);
  startActivity(i);
  Toast.makeText(getApplicationContext(), "测试Bundle", Toast.LENGTH_LONG).show();
  finish();
  }
  
  }

  另外一个例子 如果我现在有 Activity A ,B ,C;
  现在我要把值通过A经过B传给C
  你怎么传 如果用Intent的话 A-B先写一遍 再在B中都取出来 然后在把值塞到Intent中 再跳到C 累吗?
  如果我在A中用了 Bundle 的话 我把Bundle传给B 在B中再转传到C C就可以直接去了
  这样的话 还有一个好处 就是在B中 还可以给Bundle对象添加新的 key - value 同样可以在C中取出来

  

  

  public class A extends Activity {
  /**
  * 在这个类中我们来使用bundle进行传值
  */
  private Button btn;
  private TextView tv;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.a);
  
  btn = (Button) findViewById(R.id.btn1);
  tv =(TextView) findViewById(R.id.tv1);
  
  tv.setText("Activity----A");
  
  btn.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
  next();
  
  }
  });
  
  }
  private void next(){
  Intent i = new Intent();
  Bundle b = new Bundle();
  i.setClass(this, B.class);
  b.putInt("int", 1000);
  b.putString("String", "测试");
  b.putChar("char", 'c');
  i.putExtras(b);
  startActivity(i);
  finish();
  }
  
  }

  

  public class B extends Activity {
  private Button btn;
  private TextView tv;
  Bundle b = new Bundle();
  int temp1;
  String temp2;
  char temp3;

  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.b);

  btn = (Button) findViewById(R.id.btn2);
  tv = (TextView) findViewById(R.id.tv2);

  getI(getIntent());

  /**
  * 说一下 这里为什么写View.OnClickListener()
  * 因为在调用OnClickListener()会有多种OnClickListener
  * ()对象,因此我在这里不通过导包来使用OnClickListener
  * ()对象,而是通过在对象前添加View来告知编译器我调用的是哪个OnClickListener()对象
  */
  btn.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View v) {
  next();

  }
  });

  }

  // 直接用bundle获取从A中传来的数据
  private void getI(Intent i) {
  b = i.getExtras();
  temp1 = b.getInt("int", 0);
  temp2 = b.getString("String");
  temp3 = b.getChar("char", 'a');

  tv.setText("Activity----B" +"/n"+ "int=======" + temp1 +"/n"+ "String======="
  + temp2 +"/n"+ "char========" + temp3);
  }

  /**
  * 现在要将从A中传过来的值 在传到C中去,那么 就要将temp1 temp2 temp3 改为全局变量
  * 并且要填入一些B中的属性
  *
  * 我们这次直接用bundle来做
  */
  private void next() {
  Intent i = new Intent();
  i.setClass(this, C.class);
  b.putBoolean("boolean", true);
  i.putExtras(b);
  //这里在做一个测试 就是将从A过来的B放在Intent中来传递
  i.putExtra("Bundle", b);
  startActivity(i);
  finish();
  }

  }

  

  

  

  public class C extends Activity {
  private Button btn;
  private TextView tv;
  
  int temp1;
  String temp2;
  char temp3;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.c);
  
  btn = (Button) findViewById(R.id.btn3);
  tv =(TextView) findViewById(R.id.tv3);
  //getIntent() 是获取从哪里启动这个activity的Intent对象
  getI(getIntent());
  
  btn.setText("结束测试");
  btn.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
  next();
  
  }
  });
  
  }
  //获取从C中传来的数据
  private void getI(Intent i){
  Bundle b = new Bundle();
  b = i.getExtras();
  Bundle b2 = i.getBundleExtra("Bundle");
  temp1 = b.getInt("int", 0);
  temp2 = b.getString("String");
  temp3 = b.getChar("char", 'a');
  boolean temp4 = b.getBoolean("boolean", false);
  tv.setText("Activity----C"+"/n"+
  "int======="+temp1+"/n"+
  "String======="+temp2+"/n"+
  "char========"+temp3+"/n"+
  "boolean========"+temp4+"/n"+
  "b2=============="+b2.toString()//b2 中的数据就不再取出来了 大家可以明白什么意思 但是获取到的是他的大小 这个还得看底层代码
  );
  }
  
  private void next(){
  Toast.makeText(this, "测试结束", Toast.LENGTH_LONG).show();
  finish();
  }
  
  }

  

  

  

  

android中intent,按照下面的叙述,完整的语句是什么样的: Intent和Activity就不要翻译了,直接使用吧。可以把Intent看作是一个Request。

ps,你不如直接把英文放在这里。。

Android-Bundle认知,和Intent的区别:

一、Bundle: A mapping from String values to various Parcelable types


键值对的集合


类继承关系:


java.lang.Object 

android.os.Bundle 

Bundle类是一个final类: 

public final class Bundle extends Objectimplements Parcelable Cloneable


作用:可以用作是两个Activity间的通讯。


用法:


①、装载数据:


Bundle mBundle =  new  Bundle();   


mBundle.putString( "DataTag" ,  "要传过去的数据" );  


Intent intent = new Intent();  

intent.setClass(MainActivity.this, Destion.class);   

intent.putExtras(mBundle);


②、目标Activity解析数据


Bundle bundle = getIntent().getExtras(); //得到传过来的bundle


String data = bundle.getString( "DataTag" ); //读出数据


二、Intent的含义和作用 就略了。。。直接上二者比较:



两个Activity之间传递数据,数据的附加有两种方式:


一种是直接 intent.putxx();


另一种是  先bundle.putxx(), 然后再调用public Intent putExtras (Bundle extras)  添加bundle.


其实两种的本质是一样的。


先看Intent的方法:


public Intent putExtra(String name, boolean value) {


if (mExtras == null) { 


mExtras = new Bundle(); 



mExtras.putBoolean(name, value); 


return this; 



其中mExtras是intent内部定义的一个private Bundle变量。


可以看到,intent其实是调用了bundle相应的put函数,也就是说,intent内部还是用bundle来实现数据传递的,只是封装了一层而已。


而使用Bundle传值的话最后调用的方法:Intent.putExtras(Bundle extras):


public Intent putExtras(Bundle extras) {


if (mExtras == null) { 


mExtras = new Bundle(); 



mExtras.putAll(extras); 


return this; 



可以看到,其实是把之前那个bundle中的数据批量添加到intent内部的bundle中。


其实是和上面的直接用Intent传键值对是一样的原理。


总之呢,Intent旨在数据传递,bundle旨在存取数据,当然intent也提供一部分数据的存取,但比起bundle就显得不专业,不灵活的多


Android学习中碰到一个问题,就是关于intent的setClass的两个参数,,如下图。: 问题: Intent.setClass(Context packageContext, Class cls),中 第一个参数是那个Context。 (调用方,被调用方?) 假设结构如下 包:com.package依----》Activity依,Activity贰 包:com.package贰----》ActivityA,ActivityB 误解: 认为Context是调用方,以前一直在一个包中调用如,package依包中,Activity依调用Activity贰,Intent.setClass(this,Activit贰)这样不出问题的。 可是如果跨包掉,在Activity依中调用ActivityA,就出现错位了。 结论: Context是被调用方的 ,源码中是Intent.setClass(context,class)调用ComponentName(context,class) public ComponentName(Context pkg, Class cls) { mPackage = pkg.getPackageName(); mClass = cls.getName(); }可以看出 Context得到包名,class得到类名,来唯一确定Activity

android activity,intent,service是什么关系?: intent是activity和service的桥梁,通信员,activity主要操作显示界面,service在后台运行,适合长时间运行,如下载,听歌等。。

gradle 里面配置配置了包名,那androidmanifest里面的package还有用吗: 包名(package):指定本应用内Java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。
在两个不同的Application之间,用Application A的Activity A调用Application B的Activity B的时候,在AndroidManifest.xml中的package名称不能一样,否则安装完一个apk之后,再去安装另一个Application的apk的时候,会提示不存在,会有冲突,(install的时候,以内部package名字等信息为准,不是apk的名字为准),即使apk名字不同,AndroidManifest.xml中的package名相同会提示冲突。
所以,不同的Application,AndroidManifest.xml中的package名一定要不同,当一个Application中有多个package的时候,以这个Application的入口(MAIN+LAUNCHER的intent-filter)所在的包名为AndroidManifest.xml中的package名。如果一个Application没有入口程序,如packages/apps/Bluetooth,那以哪个包名作为AndroidManifest.xml中的package名都可以。

android编程中intent的相关问题。(点击吧!看问题补充回答吧!谢谢大神!): 我觉得你该看教程,没教程什么都做不了
intent 翻译为意图

用途1:Activitiy跳转用intent

还要其他用途就要你自己看教程了,
我告诉你的不是你自己的知识,估计几天就忘了
自己学习记忆才是王道

android.intent.category.home有什么用: 可以用来设置 开机启动界面

  • 15亿美元多少人民币

    合肥妇幼医院预约B超去检查的时候还要挂号吗: 预约的无需挂号 ...

    884条评论 3303人喜欢 6111次阅读 466人点赞
  • 2015玛卡价多少钱一斤

    喉镜可以当天需要预约吗?可以想照b超那样当天作吗?: 您好,人流最佳的时间段为40-70天,药流最佳的时间段为49天内。这里的最佳时间段是对女性术后最佳恢复期的时间段,也就是伤害减小到最小。人流做多了会不孕,药流则会流不干净则还需刮宫。药流没流干净的可能性是存在的。 您...

    538条评论 5403人喜欢 6289次阅读 360人点赞
  • oppo双卡设置在哪里

    手机qq 空间保存的照片 变模糊了 怎么修复?: 像素低了是没有办法恢复的,可以从Photoshop中锐化一下,但是只是稍微改善一下照片清晰度,并不能恢复原片。美图秀秀、可牛软件等是图片处理软件,这些软件本身就会再压缩照片 ...

    494条评论 2133人喜欢 6150次阅读 428人点赞
  • 120d丝袜多少钱

    U大师Win10系统开机总是扫描和修复驱动器怎么办: Win8.1系统计算机开机总是进行扫描和修复驱动器问题的处理方法。方法一:转换磁盘格式。如果扫描和要修复的磁盘(如上述的D:磁盘),其磁盘格式为FAT32格式,我们把它转换为:NTFS的格式。转换的方法很多,下面介绍...

    706条评论 6500人喜欢 2311次阅读 465人点赞
  • dnf幽灵下装要几个换

    b超单图上是什么意思?: 你不需要了解B超单图上是什么意思,你只要知道它下面的那些意思,显示的是一切正常,没有不正常的地方就好了。如果有一丝一毫的危险的话,只要他们找到了,他们肯定会在b超单上显示。看b超单是。看不出什么的。如果没有显示不正常...

    790条评论 4559人喜欢 3039次阅读 411人点赞
  • dnf女剑哪个强

    我有个少年三国志的号想放在交易猫交易平台上卖?交易猫靠谱吗?: 用交易猫都两年了到现在都没有什么问题 ...

    919条评论 6126人喜欢 5654次阅读 593人点赞