Android:从底部

时间:2016-07-11 11:00:33

标签: android android-sharing

我想与其他应用分享数据,但我不想要出现底部工具栏的标准弹出窗口;我想要这种观点:enter image description here

我按照官方文件:https://developer.android.com/training/sharing/shareaction.html

Android SDK中是否有本机组件?或者有没有图书馆可以做到这一点?

谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

你可以这样做:

首先创建一个菜单项:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.rashish.myapplication.MainActivity">
    <item
        android:id="@+id/action_share"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="always" />
</menu>

然后创建一个方法来显示Intent选择器对话框,如下所示:

private void share() {
    String textToShare = "hello";
    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    // set the type here i.e, text/image/ etc.
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject Here");
    sharingIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
    startActivity(Intent.createChooser(sharingIntent, "Share via"));
}

然后在onOptionsItemSelected方法中,单击菜单项时调用此函数:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. 
    int id = item.getItemId();

    if (id == R.id.action_share) {
        share();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

另外,请确保您已在活动中覆盖onCreateOptionsMenu,如下所示:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

这是输出

screenshot from an android device

答案 1 :(得分:0)

在Android操作系统中,Lollipop谷歌已经改变了他们的分享意图设计。因此,要获得此设计,您应该拥有棒棒糖版本及以上版本。

<强>更新

private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {

        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("image/jpg");
        File photoFile = new File(getFilesDir(), "foo.jpg");
        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(photoFile));

        mShareActionProvider.setShareIntent(shareIntent);
    }
}

尝试这样。