android82 启动Actvity和Activity的生命周期

package com.itheima.jump;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

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


    /**
     * 跳转至打电话activity
     * 跳转至其他应用的activity
     * 隐式跳转:通过指定action和data
     * @param v
     */
    public void click1(View v){
        Intent intent = new Intent();
        //隐式意图
        intent.setAction(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:110"));  tel是安卓默认的打电话Activity的前缀
        //跳转
        startActivity(intent);
    }
    
    /**
     * 跳转至secondActivity
     * 在本应用中跳转
     * @param v
     */
    public void click2(View v){
        Intent intent = new Intent();
        //cls:直接指定目标Activity的类名
        //显示意图
        intent.setClass(this, SecondActivity.class);//字节码
        startActivity(intent);
    }
    
    /**
     * 显示跳转至拨号器
     */
    public void click3(View v){
        Intent intent = new Intent();
        //指定目标Activity的包名和类名,如果Activity所在的包跟应用包名(com.android.dialer)同名,那么可以省略不写
        intent.setClassName("com.android.dialer", ".DialtactsActivity");
        startActivity(intent);
    }
    /**
     * 隐式跳转至拨号器
     */
    public void click4(View v){
        Intent intent = new Intent();
        //隐式设置拨号器的动作
        intent.setAction(Intent.ACTION_DIAL);
        startActivity(intent);
    }
    
    /**
     * 隐式跳转至secondActivity
     * @param v
     */
    public void click5(View v){
        Intent intent = new Intent();
        intent.setAction("com.itheima.sa2");        //匹配<action android:name="com.itheima.sa2"/>
        /*
        intent.setData(Uri.parse("heima2:qwe"));    匹配android:scheme="heima2"
        intent.setType("text/username");   匹配android:mimeType="text/username"
        */
        
        intent.setDataAndType(Uri.parse("heima2:qwe123"), "text/username");
        //系统会自动添加默认的category
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        startActivity(intent);
    }
    
    /**
     * 显式跳转至浏览器
     */
    public void click6(View v){
        Intent intent = new Intent();
        //com.android.browser是包名这里是安卓自带的浏览器,com.android.browser.BrowserActivity是类名
        intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
        startActivity(intent);
    }
    /**
     * 隐式跳转至浏览器,这里是隐士的启动,可以启动别的浏览器程序(例如360浏览器不是安卓默认的浏览器是跨应用调用Activity),那么这里会让你选择启动哪个浏览器。
     * @param v
     */
    public void click7(View v){
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);//没有指明调用哪个浏览器
        intent.setData(Uri.parse("http://www.baidu.com"));
        startActivity(intent);
    }
}

 清单文件:

<activity android:name=".SecondActivity">
            <intent-filter >
                <action android:name="com.itheima.sa"/>
                <action android:name="com.itheima.sa3"/>
                <data android:scheme="heima"/>   java类里面前面也要指明data,并且前缀是heima
                <data android:scheme="heima3"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            
            <intent-filter >
                <action android:name="com.itheima.sa2"/>
                <data android:scheme="heima2" android:mimeType="text/username"/>  mimeType是数据的类型
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

 

###显式意图和隐式意图的应用场景
* 显式意图用于启动同一应用中的Activity
* 隐式意图用于启动不同应用中的Activity
* 如果系统中存在多个Activity的intent-filter同时与你的intent匹配,那么系统会显示一个对话框,列出所有匹配的Activity,由用户选择启动哪一个

posted @ 2015-11-06 21:02  无天666  阅读(315)  评论(0编辑  收藏  举报