意图和意图过滤器

时间:2010-07-02 09:58:52

标签: android

如何使用意图和意图过滤器将任何消息从一个活动发送到另一个活动。

2 个答案:

答案 0 :(得分:2)

您使用Intent的putExtras(Bundle)方法

Bundle extras = new Bundle();
extras.putString("my.unique.extras.key", "this is my message");
myIntent.putExtras(extras);

然后在Intent中检索附加内容

Bundle extras = this.getIntent().getExtras();
if ( extras != null ) {
  if ( extras.containsKey("my.unique.extras.key") ) {
    this.setTitle(extras.getString("my.unique.extras.key"));
  }
}

这是duplicate question

答案 1 :(得分:0)

意图可以包含数据。接收组件可以使用该数据。有两种类型的意图

  • 明确意图

  • 隐含意图

并告知系统他们可以处理哪些隐含意图,活动,服务和广播接收器可以有一个或多个意图过滤器。 在Intent-filter下有三个测试,这些是

  • 行动测试

  • 类别测试

  • 数据测试

    使用Intent和Intent-filter

    将消息从一个活动发送到另一个活动的类
       public class MessageActivity extends Activity {
    
       public void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.message);
       Intent i = new Intent(Intent.ACTION_VIEW);
       i.setData(Uri.parse("sms:"));
       startActivity(i);
      }}
    

    xml代码

       <?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:layout_width="match_parent"
        android:layout_height="wrap_content"/>
      </LinearLayout>
    

这里我们使用Implicit Intent,因此我们必须在 AndroidManifest.xml 文件

中授予权限
  <uses-permission android:name="android.permission.MESSAGE" />

并在应用程序

中注册Message类
    <activity android:name=".MessageActivity" >
    <intent-filter>
     <action android:name="android.intent.action.MESSAGE" />   </intent-filter> 

      </activity>