intent详解(二)

原文链接


前言:上篇讲解了有关intent的基础知识,现在通过几个实例讲讲intent这几个属性的具体应用,还有,(题外话)我发现不能一直听《一生所爱》太悲凉,整得我一晚上都没劲头了,心情很低落,看来以后还是少听悲伤的歌为好。


相关链接:

《intent详解(一)》


一、使用包含预定义动作的隐式Intent

效果图:

     初始状态(一个按钮)                      跳转(多个activity符合条件,让用户选择一个)    

   

       选择我们自己写义的一个activity


1、新建应用,在布局文件中,添加一个button

  1. <RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android  
  2.     xmlns:tools=http://schemas.android.com/tools  
  3.     android:layout_width=“match_parent”  
  4.     android:layout_height=“match_parent”  
  5.     tools:context=“com.example.intenttest1.MainActivity” >  
  6.   
  7.     <Button   
  8.         android:id=“@+id/btn”  
  9.         android:layout_width=“wrap_content”  
  10.         android:layout_height=“wrap_content”  
  11.         android:text=“转到action.VIEW”/>  
  12.   
  13. </RelativeLayout>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.intenttest1.MainActivity" >

&lt;Button 
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="转到action.VIEW"/&gt;

</RelativeLayout>

2、新建一个Activity,命名为:SecondActivity

布局如下:(只是改了一下textview的显示值,其它没动)

  1. <RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android  
  2.     xmlns:tools=http://schemas.android.com/tools  
  3.     android:layout_width=“match_parent”  
  4.     android:layout_height=“match_parent”  
  5.     tools:context=“com.example.intenttest1.SecondActivity” >  
  6.   
  7.     <TextView  
  8.         android:layout_width=“wrap_content”  
  9.         android:layout_height=“wrap_content”  
  10.         android:text=“第二个activiy” />  
  11.   
  12. </RelativeLayout>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.intenttest1.SecondActivity" >
&lt;TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="第二个activiy" /&gt;

</RelativeLayout>

3、修改AndroidManifest.xml

修改SecondActivity的属性,为其添加系统定义的Action,修改如下:

  1. <activity  
  2.     android:name=“.SecondActivity”  
  3.     android:label=“@string/title_activity_second” >  
  4.     <intent-filter>  
  5.         <action android:name=“android.intent.action.VIEW” />  
  6.         <category android:name=“android.intent.category.DEFAULT” />  
  7.     </intent-filter>  
  8. </activity>  
<activity 
android:name=".SecondActivity"
android:label="@string/title_activity_second" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

4、定义隐式intent跳转

在MainActivity中,当点击按钮时实现隐式intent跳转。

  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.           
  8.         Button btn = (Button)findViewById(R.id.btn);  
  9.         btn.setOnClickListener(new View.OnClickListener() {  
  10.               
  11.             @Override  
  12.             public void onClick(View v) {  
  13.                 // TODO Auto-generated method stub  
  14.                 Intent intent = new Intent();  
  15.                 intent.setAction(Intent.ACTION_VIEW);  
  16.                 startActivity(intent);  
  17.                   
  18.             }  
  19.         });  
  20.     }  
  21.   
  22. }  
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn = (Button)findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            startActivity(intent);

        }
    });
}

}


源代码在文章最底部给出。


二、使用自定义动作的隐式Intent

1、在上例的基础上,更改AndroidManifest.xml,为SecondActivity自定义一个action name

  1. <activity  
  2.     android:name=“.SecondActivity”  
  3.     android:label=“@string/title_activity_second” >  
  4.     <intent-filter>  
  5.         <action android:name=“test_action” />  
  6.   
  7.         <category android:name=“android.intent.category.DEFAULT” />  
  8.     </intent-filter>  
  9. </activity>  
 <activity 
android:name=".SecondActivity"
android:label="@string/title_activity_second" >
<intent-filter>
<action android:name="test_action" />
     &lt;category android:name="android.intent.category.DEFAULT" /&gt;
 &lt;/intent-filter&gt;

</activity>

2、隐式Intent跳转
  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.           
  8.         Button btn = (Button)findViewById(R.id.btn);  
  9.         btn.setOnClickListener(new View.OnClickListener() {  
  10.               
  11.             @Override  
  12.             public void onClick(View v) {  
  13.                 // TODO Auto-generated method stub  
  14.                 Intent intent = new Intent();  
  15.                 intent.setAction(”test_action”);  
  16.                 startActivity(intent);  
  17.                   
  18.             }  
  19.         });  
  20.     }  
  21.   
  22. }  
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn = (Button)findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();
            intent.setAction("test_action");
            startActivity(intent);

        }
    });
}

}

在intent.setAction()里直接传入自定义的action name,就直接跳转到指定的activity,因为只有这个activity才符合条件,如若有多个activity都有action name=”test_action”的话,那就会像上例一样列出列表供用户选择。
源码在文章最底部给出。

效果图:

             初始化状态                                                        点击跳转

   


三、使用Intent打开网页

效果图:

    初始化状态                                                              打开百度网页

   

1、新建工程testIntent3,在主页面加一个Button

XML代码 :

  1. <RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android  
  2.     xmlns:tools=http://schemas.android.com/tools  
  3.     android:layout_width=“match_parent”  
  4.     android:layout_height=“match_parent”  
  5.     tools:context=“com.example.intenttest1.MainActivity” >  
  6.   
  7.     <Button   
  8.         android:id=“@+id/btn”  
  9.         android:layout_width=“wrap_content”  
  10.         android:layout_height=“wrap_content”  
  11.         android:text=“打开百度”/>  
  12.   
  13. </RelativeLayout>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.intenttest1.MainActivity" >
&lt;Button 
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="打开百度"/&gt;

</RelativeLayout>

2、点击Button打开网页
  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.           
  8.         Button btn = (Button)findViewById(R.id.btn);  
  9.         btn.setOnClickListener(new View.OnClickListener() {  
  10.               
  11.             @Override  
  12.             public void onClick(View v) {  
  13.                 // TODO Auto-generated method stub  
  14.                 Intent intent = new Intent();  
  15.                 intent.setAction(Intent.ACTION_VIEW);  
  16.                 intent.setData(Uri.parse(http://www.baidu.com));  
  17.                 startActivity(intent);  
  18.                   
  19.             }  
  20.         });  
  21.     }  
  22.   
  23. }  
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn = (Button)findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("http://www.baidu.com"));
            startActivity(intent);

        }
    });
}

}

使用隐式Intent,利用执行数据来匹配activity,由于执行数据是网页,所以也就只有浏览器才能匹配,所以如果你手机上有不止一个浏览器的话,同样会以列表形式让你选择用哪一个打开。如下图:



所有源码打包一起下载:

地址:http://download.csdn.net/detail/harvic880925/7724673


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值