`
sharp2wing
  • 浏览: 271492 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

IntentFilter相关信息

阅读更多

简述:结构化描述intent匹配的信息。包含:action,categories and data(via type,scheme ,path),还有priority, to order multiple matching filters.
       IntentFilter 中如果action为空,则视为通配符,如果type为空,则intent必须不设type,否则匹配不上。
       data被分为3个属性:type,scheme,authority/path 任何设置的属性intent必须匹配上。
                           设置了scheme 而没设type,则intent也必须类似,不能设置type,也不能是content: URI.
                           设置了type而没设scheme:将匹配上没有URI的intent,或者content:,file:的uri。
                           设置了authority:必须指定一个或多个相关联的schemes
                           设置了path:唏嘘指定一个或多个相关联的schemes
       匹配规则:
           IntentFilter 匹配Intent的上的条件:
           Action : 值相同 ,或则IntentFilter未指定action.
           DataType:. 系统通过调用Intent.resolve(ContentResolver)获取type,通配符*
                     在Intent/IntentFilter的MIME type中使用,区分大小写
           DataScheme:系统通过调用Intent. getData() and Uri.getScheme())获取scheme, 区分大小写
           DataAuthority:必须有一个dataScheme匹配上且authority值匹配上,或者IntentFilter没有定义。 Intent. getData() and Uri.getAuthority()获取authority.
           DataPath: scheme and authority必须先匹配上 ntent. getData() and Uri.getPath(),获取. 或者IntentFilter没有定义
           Categories:all of the categories in the Intent match categories given in the filter 多余的Categorie,不影响intent匹配,如果IntentFilter
                  没有指定Categorie,则只能匹配上没有Categorie的intent。

常用intent列表:
Android Intent 用法汇总
显示网页
- <activity android:name="BrowserActivity" android:label="Browser" android:launchMode="singleTask" android:alwaysRetainTaskState="true" android:configChanges="orientation|keyboardHidden" android:theme="@style/BrowserTheme">
- <!--
For these schemes were not particular MIME type has been
                 supplied, we are a good candidate.
  -->
- <intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" />
  <data android:scheme="https" />
  <data android:scheme="about" />
  </intent-filter>
- <!--
  For these schemes where any of these particular MIME types
                  have been supplied, we are a good candidate.
  -->
- <intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.BROWSABLE" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:scheme="http" />
  <data android:scheme="https" />
  <data android:mimeType="text/html" />
  <data android:mimeType="text/plain" />
  <data android:mimeType="application/xhtml+xml" />
  <data android:mimeType="application/vnd.wap.xhtml+xml" />
  </intent-filter>
- <!--
We are also the main entry point of the browser.
  -->
- <intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.LAUNCHER" />
  <category android:name="android.intent.category.BROWSABLE" />
  </intent-filter>
- <intent-filter>
  <action android:name="android.intent.action.WEB_SEARCH" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="" />
  <data android:scheme="http" />
  <data android:scheme="https" />
  </intent-filter>
- <intent-filter>
  <action android:name="android.intent.action.WEB_SEARCH" />
  <action android:name="android.intent.action.MEDIA_SEARCH" />
  <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
- <intent-filter>
  <action android:name="android.intent.action.SEARCH" />
  <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
  <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
- <intent-filter>
  <action android:name="android.net.http.NETWORK_STATE" />
  <action android:name="android.intent.action.PROXY_CHANGE" />
  </intent-filter>
  </activity>

1. Uri uri = Uri.parse("http://google.com"); 
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 
   3. startActivity(it);

显示地图

   1. Uri uri = Uri.parse("geo:38.899533,-77.036476"); 
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri);  
   3. startActivity(it);  
   4. //其他 geo URI 範例 
   5. //geo:latitude,longitude 
   6. //geo:latitude,longitude?z=zoom 
   7. //geo:0,0?q=my+street+address 
   8. //geo:0,0?q=business+near+city 
   9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom



路径规划

   1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); 
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 
   3. startActivity(it); 
   4. //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456 


打电话
   1. //叫出拨号程序
   2. Uri uri = Uri.parse("tel:0800000123"); 
   3. Intent it = new Intent(Intent.ACTION_DIAL, uri); 
   4. startActivity(it); 

   1. //直接打电话出去 
   2. Uri uri = Uri.parse("tel:0800000123"); 
   3. Intent it = new Intent(Intent.ACTION_CALL, uri); 
   4. startActivity(it); 
   5. //用這個,要在 AndroidManifest.xml 中,加上 
   6. //<uses-permission id="android.permission.CALL_PHONE" /> 

传送SMS/MMS
   1. //调用短信程序
   2. Intent it = new Intent(Intent.ACTION_VIEW, uri); 
   3. it.putExtra("sms_body", "The SMS text");  
   4. it.setType("vnd.android-dir/mms-sms"); 
   5. startActivity(it);

   1. //传送消息
   2. Uri uri = Uri.parse("smsto://0800000123"); 
   3. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
   4. it.putExtra("sms_body", "The SMS text"); 
   5. startActivity(it);

   1. //传送 MMS 
   2. Uri uri = Uri.parse("content://media/external/images/media/23"); 
   3. Intent it = new Intent(Intent.ACTION_SEND);  
   4. it.putExtra("sms_body", "some text");  
   5. it.putExtra(Intent.EXTRA_STREAM, uri); 
   6. it.setType("image/png");  
   7. startActivity(it); 

传送 Email
   1. Uri uri = Uri.parse("mailto:xxx@abc.com"); 
   2. Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
   3. startActivity(it); 

   1. Intent it = new Intent(Intent.ACTION_SEND); 
   2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com"); 
   3. it.putExtra(Intent.EXTRA_TEXT, "The email body text"); 
   4. it.setType("text/plain"); 
   5. startActivity(Intent.createChooser(it, "Choose Email Client")); 

   1. Intent it=new Intent(Intent.ACTION_SEND);   
   2. String[] tos={"me@abc.com"};   
   3. String[] ccs={"you@abc.com"};   
   4. it.putExtra(Intent.EXTRA_EMAIL, tos);   
   5. it.putExtra(Intent.EXTRA_CC, ccs);   
   6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");   
   7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   
   8. it.setType("message/rfc822");   
   9. startActivity(Intent.createChooser(it, "Choose Email Client"));

   1. //传送附件
   2. Intent it = new Intent(Intent.ACTION_SEND); 
   3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); 
   4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3"); 
   5. sendIntent.setType("audio/mp3"); 
   6. startActivity(Intent.createChooser(it, "Choose Email Client"));

播放多媒体
       Uri uri = Uri.parse("file:///sdcard/song.mp3"); 
       Intent it = new Intent(Intent.ACTION_VIEW, uri); 
       it.setType("audio/mp3"); 
       startActivity(it);



       Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); 
       Intent it = new Intent(Intent.ACTION_VIEW, uri); 

       startActivity(it);



Market 相关
1.        //寻找某个应用
2.        Uri uri = Uri.parse("market://search?q=pname:pkg_name");
3.        Intent it = new Intent(Intent.ACTION_VIEW, uri); 
4.        startActivity(it); 
5.        //where pkg_name is the full package path for an application

1.        //显示某个应用的相关信息
2.        Uri uri = Uri.parse("market://details?id=app_id"); 
3.        Intent it = new Intent(Intent.ACTION_VIEW, uri);
4.        startActivity(it); 
5.        //where app_id is the application ID, find the ID  
6.        //by clicking on your application on Market home  
7.        //page, and notice the ID from the address bar


Uninstall 应用程序
1.        Uri uri = Uri.fromParts("package", strPackageName, null);
2.        Intent it = new Intent(Intent.ACTION_DELETE, uri);  
3.        startActivity(it);  
分享到:
评论

相关推荐

    Android 信息过滤功能源码.zip

    在信息过滤场景中,我们可以创建一个`IntentFilter`来指定我们感兴趣的特定类型的信息,比如短信的特定关键字或来源。通过注册`BroadcastReceiver`并为其设置`IntentFilter`,我们可以监听并处理符合过滤条件的事件...

    Android 信息过滤功能源码.rar

    这个压缩包“Android 信息过滤功能源码.rar”可能包含了一个实现此类功能的开源项目,让我们深入探讨一下Android信息过滤的相关知识点。 1. **Android权限系统**:在Android中,为了访问短信存储或拦截短信,应用...

    Android应用源码获取手机信息-IT计算机-毕业设计.zip

    在获取手机信息的示例中,可能需要`READ_PHONE_STATE`权限来访问电话相关的硬件信息,如IMEI和SIM卡信息。 2. **Activity**:在Android中,Activity是用户界面的基本组件。此项目中的Activity可能会包含一个或多个...

    Android 获取网络信息

    此外,从Android 6.0(API level 23)开始,应用在运行时可能需要请求`ACCESS_FINE_LOCATION`或`ACCESS_COARSE_LOCATION`权限来获取网络状态,因为网络连接信息可能与位置有关。 至于数据使用统计,Android提供了`...

    电信设备-安卓系统中的广播信息运行方法及系统.zip

    下面将详细阐述相关知识点。 一、广播的概念与类型 1. 广播Intent:广播是通过Intent对象在Android系统中发送的,Intent可以携带数据,并在组件之间传递信息。 2. 动态注册与静态注册:广播接收器可以通过在...

    Android中电池信息(Battery_information)

    2. **使用`BatteryManager`类**:这是一个内置的管理类,提供了与电池相关的各种信息。 #### 三、实现步骤 ##### 1. 创建BroadcastReceiver 创建一个继承自`BroadcastReceiver`的类,并重写`onReceive`方法。在这...

    利用广播获取手机是实时电量信息

    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); registerReceiver(new BatteryInfoReceiver(), filter); ``` 3. **解析Intent数据**: 在onReceive()方法中,我们可以通过Intent对象来...

    wifi启动流程

    * `IntentFilter mFilter`:用于 Intent 过滤器,处理 Wifi 相关的广播事件。 * `BroadcastReceiver mReceiver`:用于接收 Wifi 相关的广播事件,并作出相应的处理。 * `Scanner mScanner`:用于扫描 AP(Access ...

    电信设备-实现Android手机信息读取的方法.zip

    在Android系统中,读取手机信息是开发过程中常见的需求,比如获取IMEI号、SIM卡信息、运营商信息、网络状态等。本资料将详细介绍如何在Android...通过以上介绍的方法,开发者可以轻松地获取和管理电信设备的相关信息。

    Android WIFI信息显示(开启wifi,readme.txt)

    在Android系统中,`WifiManager`是用于处理Wi-Fi功能的主要组件,它提供了一系列的方法来控制Wi-Fi状态,查询相关信息。要使用`WifiManager`,你需要在AndroidManifest.xml文件中添加以下权限: ```xml ``` 接着...

    Android程序研发源码Android 信息过滤功能源码.rar

    下面我们将深入探讨Android信息过滤的相关知识点。 1. **Android权限管理**: 在Android系统中,为了访问短信,应用需要声明`READ_SMS`和`WRITE_SMS`权限。在AndroidManifest.xml文件中添加如下权限: ```xml ...

    html中打开app

    它可能包含了设置`IntentFilter`、解析URI参数以及响应动作的相关代码。 总之,通过利用HTML的链接和Android应用的URI Scheme,我们可以实现从Web页面直接启动本地应用的功能。这种技术在推广移动应用、实现Web与...

    android-NFC开发

    1. **NfcAdapter**:这是Android系统中的核心类,用于管理与NFC相关的操作。开发者可以通过`NfcAdapter.getDefaultAdapter(Context)`获取默认的`NfcAdapter`实例,然后调用其方法来启动或关闭NFC,或者设置监听器来...

    Intent入门指南.pdf

    若未指定,系统会根据Intent的Action、Data和Category等信息,通过IntentFilter匹配合适的接收组件。 4. **IntentFilter**: IntentFilter是组件用来声明它可以响应哪些Intent的机制。例如,一个Activity可以在其...

    Data、Type属性与Intent-filter配置

    描述中的“首界面如图4所示”,虽然没有提供具体图像信息,但可以理解为用户界面有一个“查看图片”的按钮或菜单项,点击后会触发一个Intent,这个Intent携带了要查看的图片信息。系统会根据`data`和`type`属性过滤...

    05 事件处理1

    例如,如果一个Activity想要响应查看联系人信息的请求,它需要在AndroidManifest.xml中定义一个IntentFilter,声明支持ACTION_VIEW和相应的数据类型(如vnd.android.cursor.item/person)。 4. **组件间通信**:当...

    Android简单的广播消息

    在提供的压缩包文件“Android_Exp4_Broadcast”中,可能包含了实现上述功能的示例代码,包括BroadcastReceiver的定义、注册、发送广播的代码片段,以及相关的日志输出和调试信息。通过分析这些代码,你可以更直观地...

Global site tag (gtag.js) - Google Analytics