尝试使用gmail附加应用程序的.apk文件时获取权限错误

时间:2016-07-07 21:24:18

标签: android uri

我正在尝试使用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;
    }

1 个答案:

答案 0 :(得分:0)

READ_EXTERNAL_STORAGE权限是一项危险权限,在API 23+设备上必须为requested at runtime。 Gmail不会请求此权限,因此无权读取您发送的任何file:// URI。

您应该根据FileProviderSharing Files training使用Sharing Content blog postFileProvider发送内容URI,允许接收应用在没有任何其他权限的情况下读取文件。