我想实现intent-filter过滤到指定信息以后就打开一个指定activity,在manifest里面的写法我知道,就是:<activity android:name=".activity_name">
       
   <intent-filter>
            。 
  </intent-filter>
         
</activity> 但我现在想更改在java代码中的Intent-Filter来实现这个功能
我只知道要IntentFilter filter = new IntentFilter();    
        filter.addAction("android.nfc.action.TECH_DISCOVERED");别的应该怎么写呢?

解决方案 »

  1.   

      一个intent filter是一个IntentFilter类的实例。但是,android系统必须在组件未启动的情况下就知道它的能力,因此intent filter一般不会在java代码中设置,而是在应用的manifest文件中作为<intent-filter>元素的方式声明。一个例外是,为broadcast receiver注册动态的filter,可以调用Context.registerReceiver()方法,通过直接实例化IntentFilter对象创建。
      

  2.   

    我搜了一下,还有一种实现方法就是在manifest中写好intent-filter,java代码中用intent.setAction("");startActivity(intent);
    但是我发现运行以后并不是在intent-filter过滤到信息以后再启动intent,而是直接就启动了,请问这是怎么一回事呢
      

  3.   


    说的通俗点,就是在启动未指定目标的activity时候,找到该intent附带的action,在package内搜索,与之action匹配的activity。你可以理解为action就是intentfilter附带的标记。过滤的条件。
      

  4.   


    在package内搜索,与之action匹配的activity。程序自动匹配?难道不是写一个类似于
    if(IntentFilter过滤到指定信息)
    {
        startActivity(intent);
    }
    这样的代码吗?我还是不太明白
      

  5.   

    隐式意图 在使用广播接受者在java代码中创建时多会用到 隐式意图一般用在不同进程间传递消息,只要设置了相同的action和data就能启动打开其他应用程序