IntentFilterDemo

intent-filter示例:

<activity     android:name=".CustomActivity"     android:label="@string/title_activity_custom" >     <intent-filter>         <action android:name="android.intent.action.VIEW"></action>         <action android:name="com.example.shad_fnst.intentfilterdemo.LAUNCH"></action>         <category android:name="android.intent.category.DEFAULT"></category>         <data android:scheme="http"></data>     </intent-filter> </activity>
CustomActivity可以过滤接收到action是android.intent.action.VIEW或com.example.shad_fnst.intentfilterdemo.LAUNCH,以及data是http的Intent,并作出响应。系统中的其他APP也可以过滤接收到MainActivity中的Intent,并作出响应,例如浏览器。

 1 package com.example.shad_fnst.intentfilterdemo;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.net.Uri;
 6 import android.os.Bundle;
 7 import android.view.Menu;
 8 import android.view.MenuItem;
 9 import android.view.View;
10 import android.widget.Button;
11
12
13 public class MainActivity extends Activity {
14
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19
20         Button startBrowser_a = (Button) findViewById(R.id.start_browser_a);
21         startBrowser_a.setOnClickListener(new View.OnClickListener() {
22             @Override
23             public void onClick(View v) {
24                 Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
25                         Uri.parse("http://www.baidu.com"));
26                 startActivity(intent);
27             }
28         });
29
30         Button startBrowser_b = (Button) findViewById(R.id.start_browser_b);
31         startBrowser_b.setOnClickListener(new View.OnClickListener() {
32             @Override
33             public void onClick(View v) {
34                 Intent intent = new Intent("com.example.shad_fnst.intentfilterdemo.LAUNCH",
35                         Uri.parse("http://www.baidu.com"));
36                 startActivity(intent);
37             }
38         });
39
40         Button startBrowser_c = (Button) findViewById(R.id.start_browser_c);
41         startBrowser_c.setOnClickListener(new View.OnClickListener() {
42             @Override
43             public void onClick(View v) {
44                 Intent intent = new Intent("com.example.shad_fnst.intentfilterdemo.LAUNCH",
45                         Uri.parse("https://www.baidu.com"));
46                 startActivity(intent);
47             }
48         });
49     }
50
51     @Override
52     public boolean onCreateOptionsMenu(Menu menu) {
53         // Inflate the menu; this adds items to the action bar if it is present.
54         getMenuInflater().inflate(R.menu.menu_main, menu);
55         return true;
56     }
57
58     @Override
59     public boolean onOptionsItemSelected(MenuItem item) {
60         // Handle action bar item clicks here. The action bar will
61         // automatically handle clicks on the Home/Up button, so long
62         // as you specify a parent activity in AndroidManifest.xml.
63         int id = item.getItemId();
64
65         //noinspection SimplifiableIfStatement
66         if (id == R.id.action_settings) {
67             return true;
68         }
69
70         return super.onOptionsItemSelected(item);
71     }
72 }

MainActivity.java

 1 package com.example.shad_fnst.intentfilterdemo;
 2
 3 import android.app.Activity;
 4 import android.net.Uri;
 5 import android.os.Bundle;
 6 import android.widget.TextView;
 7
 8
 9 public class CustomActivity extends Activity {
10
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_custom);
15
16         TextView label = (TextView) findViewById(R.id.show_data);
17         Uri uri = getIntent().getData();
18         label.setText(uri.toString());
19     }
20 }

CustomActivity.java

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.shad_fnst.intentfilterdemo" >
 4
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:theme="@style/AppTheme" >
10         <activity
11             android:name=".MainActivity"
12             android:label="@string/app_name" >
13             <intent-filter>
14                 <action android:name="android.intent.action.MAIN" />
15
16                 <category android:name="android.intent.category.LAUNCHER" />
17             </intent-filter>
18         </activity>
19         <activity
20             android:name=".CustomActivity"
21             android:label="@string/title_activity_custom" >
22             <intent-filter>
23                 <action android:name="android.intent.action.VIEW"></action>
24                 <action android:name="com.example.shad_fnst.intentfilterdemo.LAUNCH"></action>
25                 <category android:name="android.intent.category.DEFAULT"></category>
26                 <data android:scheme="http"></data>
27             </intent-filter>
28         </activity>
29     </application>
30
31 </manifest>

AndroidManifest.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent"
 3     android:layout_height="fill_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
 4     android:paddingRight="@dimen/activity_horizontal_margin"
 5     android:paddingTop="@dimen/activity_vertical_margin"
 6     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
 7     android:orientation="vertical">
 8
 9     <Button
10         android:layout_width="fill_parent"
11         android:layout_height="wrap_content"
12         android:id="@+id/start_browser_a"
13         android:text="@string/start_browser_a"/>
14
15     <Button
16         android:layout_width="fill_parent"
17         android:layout_height="wrap_content"
18         android:id="@+id/start_browser_b"
19         android:text="@string/start_browser_b"/>
20
21     <Button
22         android:layout_width="fill_parent"
23         android:layout_height="wrap_content"
24         android:id="@+id/start_browser_c"
25         android:text="@string/start_browser_c"/>
26
27 </LinearLayout>

activity_main.xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
 3     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
 4     android:paddingRight="@dimen/activity_horizontal_margin"
 5     android:paddingTop="@dimen/activity_vertical_margin"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     tools:context="com.example.shad_fnst.intentfilterdemo.CustomActivity">
 8
 9     <TextView
10         android:layout_width="fill_parent"
11         android:layout_height="400dp"
12         android:id="@+id/show_data"/>
13
14 </RelativeLayout>

activity_custom.xml

 1 <resources>
 2     <string name="app_name">IntentFilterDemo</string>
 3
 4     <string name="hello_world">Hello world!</string>
 5     <string name="action_settings">Settings</string>
 6     <string name="start_browser_a">Start Browser with VIEW action</string>
 7     <string name="start_browser_b">Start Browser with LAUNCH action</string>
 8     <string name="start_browser_c">Exception Condition</string>
 9     <string name="title_activity_custom">CustomActivity</string>
10 </resources>

strings.xml

时间: 2024-10-26 18:44:37

IntentFilterDemo的相关文章