Android 过滤器机制应用演示

2014-11-5 星期三 16:43:47 

说明:

本例由两个Android应用组成,其中FilterProducer中的主窗口类(FilterProducerActivity)设置了多个过滤器,FilterConsumer会通过不同的过滤条件来调用FilterProducer的主窗口

运行截图:


源代码:

1、 FilterProducerActivity的manifest文件:
   
   
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mobile.android.filter.producer"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="mobile.android.filter.producer.FilterProducerActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MYACTION1" />
<action android:name="android.intent.action.MYACTION2" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MYCATEGORY1" />
<category android:name="android.intent.category.MYCATEGORY2" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MYACTION3" />
<action android:name="android.intent.action.MYACTION4" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MYCATEGORY3" />
<category android:name="android.intent.category.MYCATEGORY4" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MYACTION5" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MYCATEGORY5" />
<data android:scheme="http" />
<data android:mimeType="audio/*" />
<data android:mimeType="video/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MYACTION6" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="*"
android:mimeType="audio/*"
android:path="/work/upload.jsp"
android:port="8080"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MYACTION7" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="192.168.17.100"
android:mimeType="audio/*"
android:port="8080"
android:scheme="ftp" />
<data android:pathPattern=".*.html" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MYACTION7" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="192.168.17.111"
android:mimeType="audio/*"
android:path="/work/test.up"
android:pathPattern=".*.html"
android:pathPrefix="/test"
android:port="8888"
android:scheme="https" />
</intent-filter>
</activity>
</application>
</manifest>
2、/FilterConsumer/src/mobile/android/filter/consumer/FilterConsumerActivity.java
   
   
package mobile.android.filter.consumer;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
public class FilterConsumerActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filter_consumer);
}
public void onClick_IntentFilter2(View view)
{
//在这里使用了Action和两个category(使用一个也行),未使用data,通过验证
Intent intent = new Intent("android.intent.action.MYACTION1");
intent.addCategory("android.intent.category.MYCATEGORY1");
intent.addCategory("android.intent.category.MYCATEGORY2");
startActivity(intent);
}
public void onClick_IntentFilter3(View view)
{
//只用Action验证,通过验证
//其实系统默认为Intent对象添加了android.intent.category.DEFAULT
Intent intent = new Intent("android.intent.action.MYACTION4");
startActivity(intent);
}
public void onClick_IntentFilter4(View view)
{
//Uri匹配了scheme,并匹配了第一个data,通过验证
Intent intent = new Intent("android.intent.action.MYACTION5");
intent.setDataAndType(Uri.parse("http://www.microsoft.com:8888/index.html"), "audio/mp3");
startActivity(intent);
}
public void onClick_IntentFilter5(View view)
{
//通过验证
Intent intent = new Intent("android.intent.action.MYACTION6");
intent.setDataAndType(Uri.parse("http://www.google.com:8080/work/upload.jsp"), "audio/*");
startActivity(intent);
}
public void onClick_IntentFilter6(View view)
{
//通过验证
Intent intent = new Intent("android.intent.action.MYACTION7");
intent.setDataAndType(Uri.parse("ftp://192.168.17.100:8080/work/upload.html"), "audio/*");
startActivity(intent);
}
public void onClick_IntentFilter7(View view)
{
//三条Uri都可以通过验证
Intent intent = new Intent("android.intent.action.MYACTION7");
//intent.setDataAndType(Uri.parse("https://192.168.17.111:8888/work/test.up"), "audio/wav");
//intent.setDataAndType(Uri.parse("https://192.168.17.111:8888/test/up.aspx"), "audio/wav");
intent.setDataAndType(Uri.parse("https://192.168.17.111:8888/p/m/abc.html"), "audio/wav");
startActivity(intent);
}
}
3、/FilterConsumer/res/layout/activity_filter_consumer.xml
   
   
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical">
<Button android:layout_width="match_parent"
android:layout_height="wrap_content" android:onClick="onClick_IntentFilter2"
android:text="使用第2个Intent Filter" />
<Button android:layout_width="match_parent"
android:layout_height="wrap_content" android:onClick="onClick_IntentFilter3"
android:text="使用第3个Intent Filter" />
<Button android:layout_width="match_parent"
android:layout_height="wrap_content" android:onClick="onClick_IntentFilter4"
android:text="使用第4个Intent Filter" />
<Button android:layout_width="match_parent"
android:layout_height="wrap_content" android:onClick="onClick_IntentFilter5"
android:text="使用第5个Intent Filter" />
<Button android:layout_width="match_parent"
android:layout_height="wrap_content" android:onClick="onClick_IntentFilter6"
android:text="使用第6个Intent Filter" />
<Button android:layout_width="match_parent"
android:layout_height="wrap_content" android:onClick="onClick_IntentFilter7"
android:text="使用第7个Intent Filter" />
</LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值