3

我在共享操作提供程序中得到空指针,因为它在应用程序开始时需要一个图像。我只能稍后提供。

这是我的代码

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate menu resource file.
    getMenuInflater().inflate(R.menu.menu, menu);

    // Locate MenuItem with ShareActionProvider
    MenuItem item = menu.findItem(R.id.menu_item_share);

    // Fetch and store ShareActionProvider
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("image/*");
    Uri uri = Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),
            getBitmapName()));
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.mailSubject));
    setShareIntent(shareIntent);

    return true;
}



// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(shareIntent);
    }
}
4

1 回答 1

0

嘿 vineet 我认为您可能需要先在应用程序中初始化您的图像,然后再将其发送到共享意图。因此,不是发送共享意图,而是 URI 在创建时从 uri 中拉取图像,然后使用 bm=BitmapFactory.decodeResource(getResources(),R.drawable.image); 进行设置。

不确定这是否可行,但共享意图获得空指针异常的唯一原因是来自不存在或未初始化的图像。

希望这可以帮助

道格

于 2014-08-28T19:43:31.197 回答