隐式Intent

隐式Intent不明确指出我们想要启动哪个活动,而是指定了一系列的action、data或category等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.intenttest.MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

</RelativeLayout>
package com.example.intenttest;

import com.example.menutest.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	Button button=null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button=(Button) findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent=new Intent("com.example.intenttest.ACTION_START");
				intent.addCategory("com.example.intenttest.MY_CATEGORY");
				startActivity(intent);
			}
		});
	}

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is the Second Activity!"
        android:textSize="20dp" />

</LinearLayout>
package com.example.intenttest;

import com.example.menutest.R;

import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
	}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.menutest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.intenttest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.intenttest.SecondActivity">
            <intent-filter>
                <action android:name="com.example.intenttest.ACTION_START" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="com.example.intenttest.MY_CATEGORY"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

时间: 2024-11-10 08:10:05

隐式Intent的相关文章

在Android中Intent的概念及应用(一)——显示Intent和隐式Intent

Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间. 一.显示Intent: 创建一个Activity的完整过程: 1.手动创建一个类,让其继承自Activity: public class MyAty extends Activity 2.让其绑定一个

android 在5.0以后不允许使用隐式Intent方式来启动Service

android5.0以后不能使用隐式intent :需要指定Intent的ComponentName信息:intent.setComponent(xxx),或指定Intent的setPackage("包名"),如果两者都没有指定的话将会报以上错误.尤其在framework层启动APP层的service时,如果是隐式启动service,可能会导致系统进程挂掉,出现不断重启的现象. 三 解决方法 1. Intent intent = new Intent();    ComponentNa

android隐式intent使用场景解析

Android 隐式intent相信大家都有用过,大部分场景我们用显式intent已经能满足我们的业务需求,隐式intent大部分都是用来启动系统自带的Activity或Service之类的组件.昨天有个业务场景就是,我在第三方依赖库 module A里面有个Activity A,现在需要在Activity A里面启动 module app里面的Activity B,我想了一下,可以用隐式intent来实现这个功能,而且实现代码最简洁,不用修改或添加其他代码. 隐式intent很简单,首先要在A

Android开发学习笔记:浅谈显示Intent和隐式Intent

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/655132 Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间.

Android开发:显式/隐式Intent意图跳转Activity总结

显式跳转 在已知包名和类名的情况下常用的跳转方法: 是 nt mIntent = new Intent(); mIn Int etent.setClassName("com.android.settings","com.android.settings.Settings"); mContext.startActivity(mIntent); 我们也常这么用: y.class); startActivity(intent); 这是跳转到当前应用的某个Activity,

(三)使用Intent在活动中穿梭:显式和隐式Intent

一.显式Intent @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); Button btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener() { @Ov

隐式Intent的使用——Android学习笔记3

隐式Intent的使用 一.为什么要用隐式Intent? 但如果想调用别的程序的组件时,且开发人员往往并不清楚别的应用程序的组件名称,这时我们只能用隐式Intent,隐式Intent恰恰相反,它不会用组件名称定义需要激活的目标组件,而是Android系统帮助应用程序寻找与Intent请求意图最匹配的组件. 二.Android系统怎么找? 主要是通过Intent Filter来寻找与隐式Intent相关的对象.具体的选择方法是:Android将Intent的请求内容<intent-filter>

显式Intent与隐式Intent的功能与使用方法解析。

显式Intent与隐式Intent的功能与使用方法解析. Intent,在中文中的意思是意图.就是想要做的事. 而使用startActivity(Intentintent)或者startActivityForResult(Intentintent)或者别的使用它的方法,形象地说就是指  去做你想要做的事.(do what you want to do) 首先,大体的介绍一下它们的使用差别: 1.Explicit Intent(显式意图):主要用于调用自身应用程序的组件(activity,serv

显式intent和隐式intent

android其中显式intent和隐式intent的差别 定义: Intent定义:Intent是一种在不同组件之间传递的请求消息.是应用程序发出的请求和意图. 作为一个完整的消息传递机制,Intent不仅须要发送端,还须要接收端. 显式Intent定义:对于明白指出了目标组件名称的Intent.我们称之为显式Intent. 隐式Intent定义:对于没有明白指出目标组件名称的Intent.则称之为隐式Intent. 显示Intent直接指明了被启动的的类的定义 比方一个实例: Mainact