2016-12-01 2 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

それは今のところ働いてくれてありがとう –

関連する問題