Android中Intent的显示和隐式使用

简介:

Android应用程序中组件之间的通信都少不了Intent的使用,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。intent就是意图的意思。Intent分两种:显式(Explicit intent)和隐式(Implicit intent)。

显示调用Intent

简单的Demo从一个Activity转到另外一个Aactivity:

Mainactivity的布局文件

1
2
3
4
5
6
7
8
9
10
11
12
<EditText
     android:id= "@+id/edt_content"
     android:layout_width= "match_parent"
     android:layout_height= "wrap_content"  />
 
<Button
     android:id= "@+id/btn_login"
     android:layout_width= "wrap_content"
     android:layout_height= "wrap_content"
     android:layout_below= "@id/edt_content"
     android:onClick= "login"
     android:text= "查询"  />

 

 Mainactivity中调用点击事件:

1
2
3
4
EditText  contentEditText=(EditText) findViewById(R.id.edt_content);
         Intent intent= new  Intent( this ,PersonActivity. class );
         intent.putExtra(EXTRA,contentEditText.getText().toString());
         startActivity(intent);

  这个时候的Intent就是显示调用,直接指定了接收参数的Activity,可以唯一确定一个Activity,意图特别明确,这个时候需要在PersonActivity接收参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public  class  PersonActivity extends Activity {
 
     @Override
     protected  void  onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_person);
         TextView  textView=(TextView) findViewById(R.id.txt_content);
         Intent intent=getIntent();
         String  str=intent.getStringExtra(MainActivity.EXTRA);
         textView.setText(str);
         textView.setTextSize(20);
         textView.setTextColor(Color.RED);
     
     }

另外这个时候传递的参数使用的方法是putExtra,如果传递的参数比较多可以使用Bundle类似于map。

隐式调用

隐式,即不是像显式的那样直接指定需要调用的Activity,隐式不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity。筛选是根据所有的<intent-filter>来筛选。

这个时候需要在AndroidManifest.xml中设置一下intent-filter中去设置一下,如下,Category直接使用默认的就行:

1
2
3
4
<intent-filter>
             <action android:name= "com.example.googleone.Peson"  />
             <category android:name= "android.intent.category.DEFAULT"  />
         </intent-filter>

 Mainactivity中的调用使用,这个时候的调用:

1
2
Intent intent= new   Intent( "com.example.googleone.Peson" );
  startActivity(intent);

 这个自己定义的Action字符串可以调用自身程序的Activity,还可以其他应用程序的Action,比如说常用的拨号面板:

1
2
Intent intent =  new  Intent(Intent.ACTION_DIAL);
         startActivity(intent);

如果这个时候在AndroidManifest.xml文件中给PersonActivity, 加一个Action,如下:

1
2
3
4
5
6
7
8
9
<activity
           android:name= ".PersonActivity"
           android:label= "@string/title_activity_person"  >
           <intent-filter>
               <action android:name= "android.intent.action.DIAL" /> 
               <action android:name= "com.example.googleone.Peson"  />
               <category android:name= "android.intent.category.DEFAULT"  />
           </intent-filter>
       </activity>

Mainactivity中的调用:

1
2
3
4
5
6
7
8
9
10
11
Intent intent= new  Intent(Intent.ACTION_DIAL);
     if (intent.resolveActivity(getPackageManager()) ==  null )
     {
         view.setEnabled( false );
     }
     try  {
         startActivity(intent);
     catch  (ActivityNotFoundException e) {
         // TODO Auto-generated catch block
     Toast.makeText( this , "找不到对应的Activity" ,Toast.LENGTH_SHORT).show();
     }

结果如图所示:

  

 Intent.ACTION_DIAL是系统常量字符串,等价于android.intent.action.DIAL,调用的时候通过这个action的名称,去寻找具有这个action的activity~

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4033299.html,如需转载请自行联系原作者

相关文章
|
7月前
|
Android开发 开发者
Android基础知识:什么是Intent?有哪些类型的Intent?
Android基础知识:什么是Intent?有哪些类型的Intent?
478 0
|
存储 SQL 人工智能
Android Activity启动流程一:从Intent到Activity创建
Android Activity启动流程一:从Intent到Activity创建
|
2月前
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
88 0
|
4月前
|
Java Android开发 UED
安卓scheme_url调端:如果手机上多个app都注册了 http或者https 的 intent。 调端的时候,调起哪个app呢?
当多个Android应用注册了相同的URL Scheme(如http或https)时,系统会在尝试打开这类链接时展示一个选择对话框,让用户挑选偏好应用。若用户选择“始终”使用某个应用,则后续相同链接将直接由该应用处理,无需再次选择。本文以App A与App B为例,展示了如何在`AndroidManifest.xml`中配置对http与https的支持,并提供了从其他应用发起调用的示例代码。此外,还讨论了如何在系统设置中管理这些默认应用选择,以及建议开发者为避免冲突应注册更独特的Scheme。
|
7月前
|
定位技术 Android开发
Intent在Android中的几种用法
Intent在Android中的几种用法
87 1
|
7月前
|
Java Android开发
Android桌面快捷方式图标生成与删除 使用Intent与launcher交互
Android桌面快捷方式图标生成与删除 使用Intent与launcher交互
125 1
|
Android开发
关于Android中intent传值问题
关于Android中intent传值问题
112 0
|
7月前
|
Android开发
Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)
Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)
334 0
|
Java Android开发
Android 中通过Intent传递类对象,通过实现Serializable和Parcelable接口两种方式传递对象
Android 中通过Intent传递类对象,通过实现Serializable和Parcelable接口两种方式传递对象
143 1
|
Java API Android开发
Android 中Activity和Intent的详解
Android 中Activity和Intent的详解
137 0