开发者社区> 问答> 正文

android代码选择一个文件,然后通过whatsapp共享它

我正在尝试创建一个从设备文件管理器中选择文件的应用程序。选择文件后,应通过WhatsApp进行共享。 有人可以提供有关如何选择文件然后共享该选定文件的帮助吗?

如何获取文件的路径? 如何使用该路径通过WhatsApp共享它? 是否有任何代码要添加到manifest.xml文件中? xml布局具有两个按钮。一个按钮浏览到文件管理器,另一个按钮共享选定的文件。它也有一个TextView显示路径。


public class MainActivity extends AppCompatActivity {
    Button b,button;
    TextView t;
    Intent intent;
    public String PathHolder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    b=(Button) findViewById(R.id.b);



    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {



            File sharingfile = new File(PathHolder);

            Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
            whatsappIntent.setType("image/jpg");//mention type of image you want to share
            whatsappIntent.setPackage("com.whatsapp");
            Uri uri = Uri.fromFile(sharingfile);
            whatsappIntent.putExtra(Intent.EXTRA_STREAM, uri);
            try {
                startActivity(whatsappIntent);
            } catch (android.content.ActivityNotFoundException ex) {

                Toast.makeText(getApplicationContext(),"Whatsap not installed",Toast.LENGTH_SHORT).show();
            }



        }
    });

        button = (Button)findViewById(R.id.button) ;
        t=(TextView)findViewById(R.id.textView);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("*/*");
                startActivityForResult(intent, 7);

            }
        });


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub

        switch(requestCode){

            case 7:

                if(resultCode==RESULT_OK){

                    PathHolder = data.getData().getPath();

                    Toast.makeText(MainActivity.this, PathHolder , Toast.LENGTH_LONG).show();
                    t.setText(PathHolder);
                }
                break;

        }
    }
}

但是我无法通过WhatsApp从设备共享文件。

展开
收起
Puppet 2020-01-07 22:36:33 884 0
1 条回答
写回答
取消 提交回答
  • 您正在寻找Intent.createChooser一种与其他可以处理URI的已注册应用程序共享URI内容的方法。

    发送电子邮件,共享图像或链接以及许多其他任务的机制相同。

    本文应该为您提供帮助:https : //developer.android.com/training/sharing/send

    这是官方文件

    Intent.createChooser 公共静态Intent createChooser(Intent目标,CharSequence标题)

    在API级别1中添加

    用于创建ACTION_CHOOSER意图的便捷功能。

    构建一个新的ACTION_CHOOSER Intent,它包装给定的目标intent,还可以选择提供标题。如果目标意图指定了FLAG_GRANT_READ_URI_PERMISSION或FLAG_GRANT_WRITE_URI_PERMISSION,则这些标志也将在返回的选择器意图中进行设置,并适当设置其ClipData:或者直接反映getClipData()(如果非null的话),或者从中构造新的ClipData getData()。

    参量

    目标

    用户将选择要执行的活动的意图。

    标题

    可选标题,将显示在选择器中。

    退货

    返回一个新的Intent对象,您可以将其传递给Context.startActivity()和相关方法。

    2020-01-07 22:36:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载