不幸的是,在某些设备中单击运行时允许权限(WRITE_EXTERNAL_STORAGE)后,应用程序停止



我正在尝试为 MarshMallow+ 设备设置运行时权限。当我这样做时,它要求许可,但当我单击允许时,应用程序不幸停止。如果我再次打开该应用程序,它可以正常工作。我的运行时权限代码:

int CurrentVersion = Build.VERSION.SDK_INT;
    if (CurrentVersion >= android.os.Build.VERSION_CODES.M) {
        if (!checkIfAlreadyhavePermission())
        {
            requestForSpecificPermission();
        }
    }
}
private boolean checkIfAlreadyhavePermission() {
    int result = ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS);
    if (result == PackageManager.PERMISSION_GRANTED) {
        return true;
    } else {
        return false;
    }
}
private void requestForSpecificPermission() {
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    if (requestCode == 1) {
        switch (requestCode) {
            case 1: {
                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    createall();
                } else {
                    Toast.makeText(MainActivity.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
                }
                return;
            }
        }
    }
}

创建全部:

 public void createall()
{
    String mediaLocation = "/VApp";
    String myfolder= Environment.getExternalStorageDirectory() + mediaLocation;
    File mediaDir = new File(myfolder);
    if(!mediaDir.exists())
    {
        mediaDir.mkdir();
    }
    Toolbar toolBar =(Toolbar)findViewById(R.id.toolBar);
    setSupportActionBar(toolBar);
    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

    adapter.addFragment(new RecentActivity(), "Recent");
    adapter.addFragment(new SavedActivity(), "Saved");
    viewPager.setAdapter(adapter);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}
public class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }
    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }
    @Override
    public int getCount() {
        return mFragmentList.size();
    }
    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

这是我的 createall 方法,但是当我在应用程序停止后再次打开应用程序时,此代码工作正常。

这是因为:

    Toolbar toolBar = (Toolbar) findViewById(R.id.toolBar);
    setSupportActionBar(toolBar);
    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

    adapter.addFragment(new RecentActivity(), "Recent");
    adapter.addFragment(new SavedActivity(), "Saved");
    viewPager.setAdapter(adapter);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

上面的代码是用onCreate()方法编写的

只需剪切并粘贴到onPostResume()方法喜欢这个:

@Override
protected void onPostResume() {
    super.onPostResume();
    Toolbar toolBar = (Toolbar) findViewById(R.id.toolBar);
    setSupportActionBar(toolBar);
    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

    adapter.addFragment(new RecentActivity(), "Recent");
    adapter.addFragment(new SavedActivity(), "Saved");
    viewPager.setAdapter(adapter);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}

最新更新