我已经建立了视频播放器,第一次安装后允许权限后屏幕会变空白,但之后应用程序就可以正常工作了。
这种情况只会在第一次允许权限后发生,在此之后应用程序都可以正常工作。
下面是允许权限之前的屏幕截图:
允许权限后屏幕会变空白,下面是屏幕截图:
如果我重新启动应用程序,它将开始显示所有包含视频的文件夹,以下是屏幕截图(从内存中删除应用程序并重新打开它):
以下是HomeActivity(MainActivity)代码的示例:
public class HomeActivity extends AppCompatActivity {
// ui
RecyclerView mRecyclerView;
TextView titleText;
ImageView backButton;
//var
private static final String TAG = "HomeActivity";
private static final int REQUEST_CODE_PERMISSION = 123;
FolderAdapter mFolderAdapter;
List<String> mFolderList;
FolderViewModel mFolderViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
titleText = findViewById(R.id.top_folder_name);
backButton = findViewById(R.id.back_button);
backButton.setVisibility(View.INVISIBLE);
mFolderViewModel = new ViewModelProvider(this, new FolderViewModelFactory(this.getApplication(),"new awesome param")).get(FolderViewModel.class);
permission();
Toast.makeText(this,"on create",Toast.LENGTH_SHORT).show();
mFolderList = new ArrayList<>();
titleText.setText("Folders");
}
private void subscribeObservers(){
mFolderViewModel.getFolders().observe(this, new Observer<List<String>>() {
@Override
public void onChanged(List<String> Folders) {
mFolderAdapter.setFolder(Folders);
}
});
}
private void initRecyclerView() {
mRecyclerView = findViewById(R.id.folder_recyclerView);
mFolderAdapter = new FolderAdapter(this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,RecyclerView.VERTICAL,false);
subscribeObservers();
mRecyclerView.setAdapter(mFolderAdapter);
mRecyclerView.setLayoutManager(linearLayoutManager);
Toast.makeText(HomeActivity.this,"yes",Toast.LENGTH_SHORT).show();
}
private void permission() {
if(ContextCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(HomeActivity.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE_PERMISSION);
}
else{
Toast.makeText(HomeActivity.this,"permission 1",Toast.LENGTH_SHORT).show();
//setting observer in recyclerview
initRecyclerView();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == REQUEST_CODE_PERMISSION){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(HomeActivity.this, "Permission Granted 2", Toast.LENGTH_SHORT).show();
//setting observer in recyclerview
initRecyclerView();
}
else{
ActivityCompat.requestPermissions(HomeActivity.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUEST_CODE_PERMISSION);
}
}
}
}
我已经使用了MVVM架构。
提前感谢你。