我有一个应用程序,有一个viewPager
,我在其中添加我的照片从画廊。
在旧版本中工作得很酷,但从android 6.0及更高版本开始,我需要在运行时询问权限。我已经这样做了。但问题是,当我允许权限时,图像没有加载到viewPager
中,并且第二次后图像加载良好。
ViewPager适配器(我正在从图库加载我的图像)
public class ImageAdapter extends PagerAdapter {
private ImageView imageView;
private Context context;
private LayoutInflater inflater;
public ArrayList<String> listOfAllImages = new ArrayList<>();
private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1;
public ImageAdapter(Context context) {
this.context = context;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestRead();
checkPermission();
} else {
getAllShownImagesPath();
}
}
private void requestRead() {
if (ContextCompat.checkSelfPermission(context,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions((Activity) context,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
} else {
getAllShownImagesPath();
}
}
private void checkPermission(){
if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
getAllShownImagesPath();
}
}
@Override
public int getCount() {
return listOfAllImages.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.photopager, null);
imageView = (ImageView) view.findViewById(R.id.photoView2);
Glide.with(context).load(listOfAllImages.get(position))
.thumbnail(1f)
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
ViewPager viewPager = (ViewPager) container;
viewPager.addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
ViewPager vp = (ViewPager) container;
View view = (View) object;
vp.removeView(view);
}
private void getAllShownImagesPath() {
Uri uri;
Cursor cursor;
int column_index_data;
String absolutePathOfImage;
uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.MediaColumns.DATA,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME};
cursor = context.getContentResolver().query(uri, projection, null,
null, null);
column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
while (cursor.moveToNext()) {
absolutePathOfImage = cursor.getString(column_index_data);
listOfAllImages.add(absolutePathOfImage);
}
cursor.close();
}
}
点击权限请求后如何加载图像?
这是适配器,因为我无法重写onRequestPermissionsResult。
首先,让我们试着找出问题的根源:
它第一次不起作用,因为您正在异步执行某些内容,并希望同步获得结果:
requestRead();
checkPermission();
因此,当您调用check Persion()时;权限尚未授予。
可能的解决方案是:
处理活动或片段中的权限请求:link1和link2,这是您应该熟悉的官方文档,因为您之前已经实现了此功能。然后,当授予权限时
onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults)
您可以让适配器知道(adapter.readPermissionGranted()只是作为示例),以便它可以获取图像(getAllShown ImagesPath();)。
我的applet在Windows7上工作得很好(在IDE和Firefox中都可以作为一个签名的部署到网页上),但在OS X上运行时会抛出(在IDE和Firefox中都可以)。 当它尝试使用新的创建新的时,会发生异常: 在删除显式文件分隔符之后,它在Windows和OS X上的IDE(Eclipse)上都可以工作: 但是当部署为时,在Windows和OS X上抛出相同的。 使用与系统相关的分隔符给出
我按照ruby on rails教程运行postgres,但是当我尝试“rake db:create”时,我得到了以下错误: 我发现这个问题发出一些类似的问题,但我不能让它工作。 升级到 OSX 10.7 狮子会后修复后格鲁姆 阅读此问题后,我安装了homebrew,路径很好,brew医生显示路径上没有错误。
接口管理的逻辑较为复杂,操作频率高,层层审批将严重拖慢生产效率,因此传统的金字塔管理模式并不适用。 YApi 将扁平化管理模式的思想引入到产品的权限管理中,超级管理员 拥有最高的权限,并将权限分配给若干 组长,超级管理员 只需管理组长 即可,实际上管理YAPI各大分组与项目的是“组长”。组长对分组或项目负责,一般由BU负责人/项目负责人担任。 认识组长 组长分为 分组组长 与 项目组长,他们的关系
您可以定义 M600 上各种应用程式允许使用的信息。 编辑权限设定 导航至 Settings(设定)应用程式,找到并轻触 Apps(应用程式)。 轻触System Apps(系统应用程式)。 滚动列表,找到并轻触您想编辑其权限内容的应用程式或服务。 轻触Permissions(权限)。 轻触不同权限,在开启权限(开关为蓝色)和关闭权限(开关为灰色)之间来回切换。
macOS 与 Linux 都属于 Unix 类型的操作系统,所以它们的文件与目录的权限的概念是一样的。 三个动作 系统上的一个用户,对某个文件或目录能做的有三个动作:读取,写入,执行。这三个动作也可以看成是三个权限,用户可以读取文件里的内容,我们就说他对这个文件拥有读取的权限。如果用户可以在某个目录的下面创建新的文件,我们就可以说这个用户对于这个目录来说拥有写入的权限。 这三个权限用字母表示:
权限定义了对平台上资源的操作权限。 权限定义了对平台上资源的操作权限,系统部署完成后预置了常用权限,称为系统权限。用户本身没有任何权限,需要在用户加入项目时为其指定角色,并将权限关联到角色,才能使用户具有对应的操作权限。 说明 系统权限结合用户视图、操作权限针对资源生成9种权限。 用户视图分为管理后台、域管理后台、项目视图; 操作权限分为管理权限、编辑权限、只读权限; 因此资源权限具体为全局下资源