我正在尝试使用Intent分享应用程序的apk。
除了gmail之外,所有应用都可以共享。当尝试使用gmail附加apk文件时,它表示权限被拒绝。 我应该设置哪个权限以及在哪里?请检查view.setOnClickListener。
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (null == view) {
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.snippet_list_row, null);
}
ApplicationInfo applicationInfo = appsList.get(position);
if (null != applicationInfo) {
TextView appName = (TextView) view.findViewById(R.id.app_name);
TextView packageName = (TextView) view.findViewById(R.id.app_paackage);
ImageView iconview = (ImageView) view.findViewById(R.id.app_icon);
appName.setText(applicationInfo.loadLabel(packageManager));
packageName.setText(applicationInfo.packageName);
iconview.setImageDrawable(applicationInfo.loadIcon(packageManager));
}
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
File srcFile = new File(appsList.get(position).publicSourceDir);
Intent share = new Intent();
share.setAction(Intent.ACTION_SEND);
share.setType("application/vnd.android.package-archive");
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(srcFile));
context.startActivity(Intent.createChooser(share, "Sharing"));
} catch (Exception e) {
e.printStackTrace();
}
}
});
return view;
}
答案 0 :(得分:0)
READ_EXTERNAL_STORAGE
权限是一项危险权限,在API 23+设备上必须为requested at runtime。 Gmail不会请求此权限,因此无权读取您发送的任何file://
URI。
您应该根据FileProvider和Sharing Files training使用Sharing Content blog post。 FileProvider
发送内容URI,允许接收应用在没有任何其他权限的情况下读取文件。