展会信息港展会大全

Android Intent action有什么用???
来源:互联网   发布日期:2016-01-14 09:33:35   浏览:1693次  

导读:实例一:有三个Activity:MainActivity.java/BAcitvity.java/CActivity.java假设这是一个照相应用MainActivity是程序入口,BAc...

实例一:

有三个Activity:MainActivity.java/BAcitvity.java/CActivity.java

假设这是一个照相应用MainActivity是程序入口,BActivity和CActivity都可以处理照相的内容。

在我们不会使用action的时候我们要使这个应用既可以使用BActivity照相,又能使用CActivity照相如何实现?

当然是在MainActivity中写两个Button,

new Intent(MainActivity.this,BActivity.class);

new Intent(MainActivity.this,CActivity.class);

通过两种不同的Intent来发起请求。

那么如何使用action来实现呢?

在xml中先这样定义:

[html]

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity

android:name=".BActivity"

android:label="@string/title_activity_main"

android:launchMode="singleTask" >

<intent-filter>

<action android:name="com.h3c.intent.ACTION_VIEW"></action>

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>

</activity>

<activity

android:name=".CActivity"

android:label="@string/title_activity_main" >

<intent-filter>

<action android:name="com.h3c.intent.ACTION_VIEW"></action>

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>

</activity>

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity

android:name=".BActivity"

android:label="@string/title_activity_main"

android:launchMode="singleTask" >

<intent-filter>

<action android:name="com.h3c.intent.ACTION_VIEW"></action>

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>

</activity>

<activity

android:name=".CActivity"

android:label="@string/title_activity_main" >

<intent-filter>

<action android:name="com.h3c.intent.ACTION_VIEW"></action>

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>

</activity>

我们在MainActivity中实现一个Button,点击发送:

new Intent("com.h3c.intent.ACTION_VIEW");

此时就会弹出一个Dialog让我们自动选择是使用BActivity还是使用CActiviy了,就如前文我提到camer360的那个例子

这也就是隐式intent,即发送一种类型的action,可以让所有支持该类型的activity都收到消息,然后由用户选择使用哪个activity处理。

实例二:(Android分享与接收分享)

自己之前其实也接触过action,但是没有自己的去想清楚。比如在做DLNA这个项目的时候需要支持第三方媒体app分享给DLNA,如何实现呢?

首先看看如何分享给别人:

[java]

public static void shareText(Context context, String title, String text) {

Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_SUBJECT, title);

intent.putExtra(Intent.EXTRA_TEXT, text);

context.startActivity(Intent.createChooser(intent, title));

}

public static void shareText(Context context, String title, String text) {

Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_SUBJECT, title);

intent.putExtra(Intent.EXTRA_TEXT, text);

context.startActivity(Intent.createChooser(intent, title));

}就是用上文提到的隐式intent,因为我并不知道有那些应用可以支持分享,所以我用隐式intent发起分享这一类的请求。

我们再看如何支持分享:

[html]

<activity android:name=".SharePage" android:label="分享到微博">

<intent-filter>

<action android:name="android.intent.action.SEND" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="image/*" />

</intent-filter>

</activity>

<activity android:name=".SharePage" android:label="分享到微博">

<intent-filter>

<action android:name="android.intent.action.SEND" />

<category android:name="android.intent.category.DEFAULT" />

<data android:mimeType="image/*" />

</intent-filter>

</activity>是的,使用action告诉别人我支持SEND这类隐式intent,注意必须也有这样一句话,否则运行会报错。[html] view plaincopyprint?<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.DEFAULT" />最后通过data约束一下格式。

大家应该跟我一样终于明白action的用法了吧!

作者:h3c4lenovo

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港