【问题标题】:android code to select a file and then share it through whatsappandroid代码选择一个文件,然后通过whatsapp分享
【发布时间】:2020-01-07 09:48:09
【问题描述】:

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

  1. 如何获取文件的路径?
  2. 如何使用该路径通过 WhatsApp 进行分享?
  3. 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 从设备共享文件。

【问题讨论】:

  • 您只会共享一个文件。然后用户选择是通过邮件还是任何其他应用程序完成。

标签: android whatsapp file-sharing


【解决方案1】:

您正在寻找的是 Intent.createChooser 方法来与其他可以处理它的注册应用程序共享 URI 的内容。

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

这篇文章应该对你有所帮助:https://developer.android.com/training/sharing/send

这是官方文档

Intent.createChooser

public static Intent createChooser(Intent 目标,CharSequence 标题)

在 API 级别 1 中添加

用于创建 ACTION_CHOOSER Intent 的便捷函数。

构建一个包装给定目标意图的新 ACTION_CHOOSER Intent,还可以选择提供标题。如果目标 Intent 已指定 FLAG_GRANT_READ_URI_PERMISSION 或 FLAG_GRANT_WRITE_URI_PERMISSION,则这些标志也将在返回的选择器 Intent 中设置,并适当设置其 ClipData:如果 getClipData() 为非空,则直接反映 getClipData(),或者从构建的新 ClipData获取数据()。

参数

目标

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

标题

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

退货

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2021-10-28
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    相关资源
    最近更新 更多