我正在尝试创建一个从设备文件管理器中选择文件的应用程序。选择文件后,应通过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从设备共享文件。
您正在寻找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()和相关方法。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。