android系统支持有一个应用中的内容分享到另一个应用中,典型的例子就是相册应用和微博微信这种应用的互动。如果某个应用的分享按钮调用的是系统的分享功能,可能会是如下画面:

看得出来,这个系统分享的应用列表是可以添加应用的,那么我们如何将我们自己的应用添加进去呢?那就得看我们想要分享的是什么类型了。

1.确定分享传输的数据类型。android支持的传递的类型可以参见这篇文章:Android把自己应用加入到系统文件分享中。如果是分享文本可以定义成text/*,而分享图片则可以是image/*。

2.确定应用要跳转的具体页面。一个应用可能有很多页面,另一个应用把数据传过来了,要那个页面去接受呢?这就需要与具体业务相结合了。确定好页面后,在AndroidManifest文件中相应的Activity中填入intent-filter,下面是个例子:

<activity android:name="com.sean.zq.android.view.share.ShareActivity">
            <!-- 处理单张图片的Intent -->
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>

            <!-- 处理多张图片的Intent -->
            <intent-filter>
                <action android:name="android.intent.action.SEND_MULTIPLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>
        </activity>

加上后,系统就知道了在分享图片类型时,需要带上你的应用。就像上面的图片一样,你的应用就会出现在列表中。需要注意的是,列表中图标下面的文案,是取的android:label的值,没有设置取的是应用名称。

3.Intent URI数据处理。

其他应用分享传过来的数据是以Intent的形式。这段不多说,直接上代码:

Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
        if (imageUri != null) {
            //自动裁剪出制定大小的图片显示在imageview上
            ContentResolver contentProvider = getContentResolver();
            Bitmap mBitmap = null;
            try {
                Bitmap bmp = BitmapFactory.decodeStream(contentProvider.openInputStream(imageUri));
                mBitmap = Bitmap.createScaledBitmap(bmp, 100, 100, true);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            imageView.setImageBitmap(mBitmap);
        }

上面这段代码是将图片转化成Bitmap,之后绘制在界面上,当然也可以转换成文件,然后读取绘制。

4.添加读或者写存储设备的权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

到这里,将应用添加到系统的分享列表中就完成了。但是还需要注意跳转的页面的业务逻辑

results matching ""

    No results matching ""