最近私はファイルを検索してダウンロードする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;
}
の許可は既にそれを求めて前に付与されている場合は、単にチェックする必要があります
の可能性のある重複(HTTP [Androidのマシュマロ要求許可?]:/ /stackoverflow.com/questions/33666071/android-marshmallow-request-permission) – AxelH