android T 建立文件夹及文件的记录

第一:AndroidManifest.xml 中整体给予apk权限,如此加入后,在android的settings中,可以找到app.手动给予静态的权限,但是app不一定能使用,请大神指导为什么?

<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />

<uses-permission android:name="android.permission.READ_CALENDAR" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

第二:添加rxPermisson的依赖

添加依赖:

打开 build.gradle(app) ,添加以下代码:

implementation 'com.github.tbruyelle:rxpermissions:0.12'

//rxJava 注意:这里必须是rxJava3,其它不行,反正我搞了半天

api 'io.reactivex.rxjava3:rxjava:3.0.4'

api 'io.reactivex.rxjava3:rxandroid:3.0.0'

第三步:

打开settings.gradle添加以下代码

dependencyResolutionManagement {

repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

repositories {

google()

mavenCentral()

maven {url 'https://jitpack.io'} //添加的依赖的仓。添加这句

}

}

第四步:app将要动态申请的权限,获得用户允许后,就可以使用这些权限。

private static final String[] permissionsGroup = new String[]{

Manifest.permission.READ_MEDIA_IMAGES,

Manifest.permission.READ_MEDIA_AUDIO,

Manifest.permission.READ_MEDIA_VIDEO,

Manifest.permission.READ_CALENDAR, //ok

Manifest.permission.RECORD_AUDIO, //ok

Manifest.permission.ACCESS_FINE_LOCATION, //ok

Manifest.permission.CAMERA //ok

};

第五步:申请权限

这里时点击onClick执行获取权限。

public void testEnsureEachCombined(View view) {

RxPermissions rxPermissions = new RxPermissions(this);

Observable.timer(10, TimeUnit.MILLISECONDS)

.compose(rxPermissions.ensureEachCombined(permissionsGroup))

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Consumer<Permission>() {

@Override

public void accept(Permission permission) throws Throwable {

Log.i(TAG, "权限名称:" + permission.name + ",申请结果:" + permission.granted);

}

});

}

第六步:在app中建立文件夹与文件

File appDirectory = mContext.getFilesDir();

File customDirectory = new File(appDirectory,"xuxdTest");

if (!customDirectory.exists()){

boolean isDirectoryCreated = customDirectory.mkdirs();

if(isDirectoryCreated){

Log.d(TAG, "init-step-7 isDirectoryCreated "+isDirectoryCreated);

}else {

Log.d(TAG, "init-step-8 isDirectoryCreated "+isDirectoryCreated);

}

}

if(customDirectory.exists()){

Log.d(TAG, "init-step-9 customDirectory exists"+customDirectory.toString());

}else {

Log.d(TAG, "init-step-9 customDirectory not exists");

}

// mWindEar.init(mContext);

// mWindEar.startRecord(true);

try {

File newFile = new File(customDirectory, "example.txt");

// 如果文件不存在,创建新文件

if (!newFile.exists()) {

boolean isFileCreated = newFile.createNewFile();

if (isFileCreated) {

Log.d(TAG, "文件建立成功 .......... ");

} else {

Log.d(TAG, "文件建立 失败 .........");

}

}

} catch (IOException e) {

Log.e(TAG, "Error occurred: " + e.toString());

}

}

});

相关推荐
用户2018792831676 小时前
Android黑夜白天模式切换原理分析
android
芦半山6 小时前
「幽灵调用」背后的真相:一个隐藏多年的Android原生Bug
android
卡尔特斯6 小时前
Android Kotlin 项目代理配置【详细步骤(可选)】
android·java·kotlin
ace望世界6 小时前
安卓的ViewModel
android
ace望世界6 小时前
kotlin的委托
android
CYRUS_STUDIO9 小时前
一文搞懂 Frida Stalker:对抗 OLLVM 的算法还原利器
android·逆向·llvm
zcychong9 小时前
ArrayMap、SparseArray和HashMap有什么区别?该如何选择?
android·面试
CYRUS_STUDIO9 小时前
Frida Stalker Trace 实战:指令级跟踪与寄存器变化监控全解析
android·逆向
ace望世界14 小时前
android的Parcelable
android
顾林海14 小时前
Android编译插桩之AspectJ:让代码像特工一样悄悄干活
android·面试·性能优化