收到来自其他应用程序的简单的数据

就像你的应用程序可以将数据发送给其他应用程序,也可以很容易接收来自应用程序的数据。考虑用户如何与应用程序交互,数据类型你想收到什么其他应用程序。例如,一个社交网络应用程序可能会接收文本内容感兴趣,就像一个有趣的web URL,从另一个应用程序。Google + Android应用程序接受文本和单个或多个图像。与这个应用程序,用户可以很容易地开始一个新的Google +发布Android的照片画廊应用。

更新你的清单

意图过滤器通知系统意图应用程序组件是什么愿意接受。类似于你如何构造一个意图的行动ACTION_SEND发送简单的数据到其他应用课,您创建的意图过滤器,以能够接受该行动的意图。你在清单定义一个意图过滤器,使用<意图过滤器>元素。例如,如果您的应用程序处理接收文本内容,任何类型的单个图像,或任何类型的多个图像,你的表现看起来像:

<activity android:name=".ui.MyActivity" >
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.categor
1911
y.DEFAULT" />
        <data android:mimeType="image/*" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.SEND_MULTIPLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="image/*" />
    </intent-filter>
</activity>

注意:有关意图过滤器和意图解决的更多信息请阅读目的和意图过滤器

当另一个应用程序试图分享这些事情通过构造一个意图,通过startActivity(),您的应用程序将列出在意图选择器作为一个选项。如果用户选择您的应用程序,相应的活动(。ui。MyActivity在上面的示例中)将开始。然后由你来妥善处理的内容在你的代码和UI。

处理传入的内容

处理内容由一个意图,开始通过调用getIntent意图对象()。一旦你有了对象,您可以检查其内容,确定下一步要做什么。请记住,如果这个活动可以从系统的其他部分,如发射器,然后你需要考虑这个当检查意图。

void onCreate (Bundle savedInstanceState) {
    ...
    // Get intent, action and MIME type
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            handleSendText(intent); // Handle text being sent
        } else if (type.startsWith("image/")) {
            handleSendImage(intent); // Handle single image being sent
        }
    } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
        if (type.startsWith("image/")) {
            handleSendMultipleImages(intent); // Handle multiple images being sent
        }
    } else {
        // Handle other intents, such as being started from the home screen
    }
    ...
}

void handleSendText(Intent intent) {
    String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
    if (sharedText != null) {
        // Update UI to reflect text being shared
    }
}

void handleSendImage(Intent intent) {
    Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    if (imageUri != null) {
        // Update UI to reflect image being shared
    }
}

void handleSendMultipleImages(Intent intent) {
    ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
    if (imageUris != null) {
        // Update UI to reflect multiple images being shared
    }
}

警告:照顾额外检查传入的数据,你永远不知道一些其他应用程序可能会寄给你。例如,错误的MIME类型可能被设置,或者图片发送可能会非常大。还有,记得在一个单独的线程来处理二进制数据,而不是主要(UI)线程。

更新UI可以作为填充EditText一样简单,也可以是更复杂的像一个有趣的照片过滤器应用到一个图像。这是特定于您的应用程序接下来会发生什么。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值