2017-09-30 20 views
0

このコードを非同期で使用して、権限を持つアンドロイドにディレクトリが存在しない場合は作成します。私のコードはsucessfullyアンドロイド5.1で動作しますが、私は、Android 7.0でアプリを展開したときにディレクトリが自動的にAndroid 7.0で内部ストレージのディレクトリを作成できない

File sdcard = Environment.getExternalStorageDirectory() ; 
     File folder = new File(sdcard.getAbsoluteFile(), "Quoteimages"); 
     if(!folder.exists()){ 
      folder.mkdir(); 

     } 

マニフェストファイルは今何

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" /> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> 

アプリケーションのapkの詳細へのリンクApp apk detail link

で作成されていません私はそれをURLからフォルダ書き込みイメージを作成し、それらを読み取る必要があります。これはアンドロイド5.1では動作しますが、アンドロイドバージョン7では動作しません。

+0

https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it – CommonsWare

+1

また、 'READ_INTERNAL_STORAGE'または' WRITE_INTERNAL_STORAGE'という名前のアクセス権はありません。 – CommonsWare

+2

[実行時に許可を確認する方法]の複製がありますか?(https://stackoverflow.com/questions/30549561/how-to-check-grants-permissions-at-run-time) –

答えて

-1

あなたはたぶん、コードのこの部分がお手伝いしますロリポップ

上記のアンドロイドのバージョンのランタイム許可を実装する必要があります。

private static final int PERMS_REQUEST_CODE = 123; 

// ............. .................................................. ............................................

private boolean hasPermissions(){ 
    int res = 0; 
    //string array of permissions, 
    String[] permissions = new String[] 
{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}; 

    for (String perms : permissions){ 
     res = checkCallingOrSelfPermission(perms); 
     if (!(res == PackageManager.PERMISSION_GRANTED)){ 
      return false; 
     } 
    } 
    return true; 
} 

private void requestPerms(){ 
    String[] permissions = new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ 
     requestPermissions(permissions,PERMS_REQUEST_CODE); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    boolean allowed = true; 

    switch (requestCode){ 
     case PERMS_REQUEST_CODE: 

      for (int res : grantResults){ 
       // if user granted all permissions. 
       allowed = allowed && (res == PackageManager.PERMISSION_GRANTED); 
      } 

      break; 
     default: 
      // if user not granted permissions. 
      allowed = false; 
      break; 
    } 

    if (allowed){ 
     //user granted all permissions we can perform our task. 
     ListItem listItem = new ListItem(); 
     Glide.with(getApplicationContext()).asBitmap().load(listItem.getImgurl()).into(new SimpleTarget<Bitmap>(){ 



      @Override 
      public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) { 
       FileOutputStream fileOutputStream = null; 
       File file = getDisc(); 
       if(!file.exists()&& !file.mkdirs()){ 

        Toast.makeText(getApplicationContext(),"Can't create directory to save image", Toast.LENGTH_LONG).show(); 
        return; 
       } 

       SimpleDateFormat simpleDataFormat = new SimpleDateFormat("yyyymmsshhmmss"); 
       String date = simpleDataFormat.format(new Date()); 
       String name = "img"+date+".jpg"; 
       String file_name = file.getAbsolutePath()+"/"+name; 
       File new_file= new File(file_name); 
       try { 
        fileOutputStream=new FileOutputStream(new_file); 
        resource.getHeight(); 
        resource.getWidth(); 
        resource.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream); 
        Toast.makeText(getApplicationContext(),"SAVED", Toast.LENGTH_LONG).show(); 
        fileOutputStream.flush(); 
        fileOutputStream.close(); 

       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       refreshGallery(new_file); 

      } 
      public void refreshGallery(File file){ 

       Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
       intent.setData(Uri.fromFile(file)); 
       sendBroadcast(intent); 

      } 


      private File getDisc(){ 



       File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
       return new File(file, "FolderNamerYourChoice"); 
      } 
     }); 

    } 
    else { 
     // we will give warning to user that they haven't granted permissions. 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      if (shouldShowRequestPermissionRationale(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)){ 
       Toast.makeText(this, "Storage Permissions denied.", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
+0

アンドロイド7.0で変更されましたアプリケーションのファイルシステム。 –

関連する問題