2016-12-01 4 views
0

Недавно я работаю над разработкой Android, который выполняет поиск и загрузку файлов ... Приложение отлично работает в старых версиях Android, но оно рушилось в версии 6 и далее ... поэтому я добавляю новое разрешение на хранение файлов. Теперь, когда я открываю приложение и хочу что-то искать, он дает мне уведомление о доступе к носителям и хранилищу и просит разрешить или запретить ... я принимаю его, но после поиска он снова запрашивает и когда я нажимаю кнопку загрузки, он спрашивает снова ... Было бы возможно, если приложение запрашивает только один раз или, может быть, когда новый пользователь устанавливает его в первый раз, он спрашивает их, а затем не снова и снова?Android новое разрешение на хранение для скачивания

Это часть кода, который может считаться полезным для вас, чтобы я мог улучшить это. Благодаря

// Declaring Your View and Variables 

Toolbar toolbar; 
ViewPager pager; 
ViewPagerAdapter adapter; 
SlidingTabLayout tabs; 
CharSequence titles[] = {"Search Results"}; 
CharSequence titles2[] = {""}; 
int numbOfTabs = titles.length; 
int numbOfTabs2 = titles2.length; 
private AdView mAdView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ActivityCompat.requestPermissions(MainActivity.this, 
      new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1); 





    // Creating The Toolbar and setting it as the Toolbar for the activity 
    toolbar = (Toolbar) findViewById(R.id.tool_bar); 
    setSupportActionBar(toolbar); 


    Intent intent = getIntent(); 

    if (Intent.ACTION_SEARCH.equals(intent.getAction())) 
     adapter = new ViewPagerAdapter(getSupportFragmentManager(), titles, numbOfTabs, false); 
    else 
     adapter = new ViewPagerAdapter(getSupportFragmentManager(), titles2, numbOfTabs2, true); 

    // Assigning ViewPager View and setting the adapter 
    pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(adapter); 

    // Assigning the Sliding Tab Layout View 
    tabs = (SlidingTabLayout) findViewById(R.id.tabs); 
    tabs.setDistributeEvenly(true); 
    tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { 
     @Override 
     public int getIndicatorColor(int position) { 
      return getResources().getColor(R.color.tabs_scroll_color); 


     } 
    }); 

    // Setting the ViewPager For the SlidingTabsLayout 
    tabs.setViewPager(pager); 

    if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 

     assert getSupportActionBar() != null; 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     String query = intent.getStringExtra(SearchManager.QUERY); 
     this.setTitle(query); 
    } 


} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_main, menu); 

    // Associate searchable configuration with the SearchView 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    return true; 
} 

'

+0

Возможный дубликат (HTTP [разрешения Android запроса зефир?]://stackoverflow.com/questions/33666071/android-marshmallow-request-permission) – AxelH

ответ

1

Вы должны просто проверить, если разрешение, как уже было предоставлено, прежде чем просить за него:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);      
} 
+0

спасибо, что это сработало сейчас –

Смежные вопросы