用于接收意图的Intent过滤器

时间:2014-09-15 11:42:36

标签: android android-intent intentfilter

我有一个关于android编程的问题。我有一个文件浏览器应用程序,我想实现各种功能,如打开照片音乐等。但在应用程序本身,不发送意图到其他应用程序!所以,我的问题是,我应该使用什么意图过滤器来“插件”应用程序来接收“开放”意图?

这是我的代码

public static void openFile(final Context context, final File target) {
    final String mime = MimeTypes.getMimeType(target);
    final Intent i = new Intent(Intent.ACTION_VIEW);

    if (mime != null) {
        i.setDataAndType(Uri.fromFile(target), mime);
    } else {
        i.setDataAndType(Uri.fromFile(target), "*/*");
    }

    if (context.getPackageManager().queryIntentActivities(i, 0).isEmpty()) {
        Toast.makeText(context, R.string.cantopenfile, Toast.LENGTH_SHORT)
                .show();
        return;
    }

    try {
        context.startActivity(i);
    } catch (Exception e) {
        Toast.makeText(context,
                context.getString(R.string.cantopenfile) + e.getMessage(),
                Toast.LENGTH_SHORT).show();
    }
}

1 个答案:

答案 0 :(得分:0)

好吧,假设您想要从自己的资源管理器中打开图像 创建一个新的Activity让我们说ImageActivity,然后你只需要在你的活动中实现一个ImageViewer,并从调用Activity中简单地发送一个包含你的图像Bytes的Extra Bundle的意图

修改

发送活动

Intent intent = new Intent(MainActivity.this, ImageActivity.class);
            ImageView imageView =  findViewById(R.id.image).getDrawable();
    imageView.buildDrawingCache();
    Bitmap image = imageView.getDrawingCache();
     Bundle extras = new Bundle();
    extras.putParcelable("imagebitmap", image);
    intent.putExtras(extras);
    startActivity(intent);

接收活动ImageActivity

Bundle extras = getIntent().getExtras();
Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap");
                ImageView image =  findViewById(R.id.image);
image.setImageBitmap(bmp );