分享Java小白的第一个实用程序,其中因为android权限问题差点挠破头,最后通过查找各类教程终于成功。下面是源代码:

package com.example.timemachine;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;import android.Manifest;
import android.annotation.SuppressLint;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainActivity extends AppCompatActivity {private static final int REQUEST_EXTERNAL_STORAGE = 1;private static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};private String fileName;// 记录目录路径private String fileDir;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//android 6.0以上//进入程序,申请读写权限int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);if (permission != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);}}}public void TimeC1(View view){@SuppressLint("SimpleDateFormat") SimpleDateFormat format = new SimpleDateFormat("yyyyMM");String y= format.format(new Date());TextView textView1=(TextView) findViewById(R.id.TimeY);textView1.setText(y);}public void TimeC2(View view){@SuppressLint("SimpleDateFormat") SimpleDateFormat format1=new SimpleDateFormat("ddHHmm");String d=format1.format(new Date());TextView textView2=(TextView) findViewById(R.id.TimeD);textView2.setText(d);}public void TimeC(View view){String y1;String d1;String date;TextView textView1=(TextView) findViewById(R.id.TimeY);TextView textView2=(TextView) findViewById(R.id.TimeD);y1=textView1.getText().toString();d1=textView2.getText().toString();String yd;yd=(y1+"\ndayTime "+d1);String head;{head=("default 0\nmres 24\nphoto_size 0\nsplit 222\nyearMonth");}date=(head+" "+yd);TextView textView3=(TextView) findViewById(R.id.textView);textView3.setText(date);}private void createFile(){String mStrPath = Environment.getExternalStorageDirectory().getPath() + "/default.ini";//String SYS_savePath=Environment.getExternalStorageDirectory().toString()+"/SYS";//File SFile=new File(SYS_savePath);File mFile=new File(mStrPath);TextView textView=(TextView) findViewById(R.id.textView2);//if (SFile.exists()){//    SFile.delete();//}//try {//    SFile.createNewFile();//    textView.setText("文件创建成功");//}catch (IOException e){//    e.printStackTrace();//    textView.setText("文件创建失败");//}if (mFile.exists()){mFile.delete();}try {mFile.createNewFile();textView.setText("文件创建成功");}catch (IOException e){e.printStackTrace();textView.setText("文件创建失败");}OutputStream ou = null;String y1;String d1;String date;TextView textView1=(TextView) findViewById(R.id.TimeY);TextView textView2=(TextView) findViewById(R.id.TimeD);y1=textView1.getText().toString();d1=textView2.getText().toString();String yd;yd=(y1+"\ndayTime "+d1);String head;{head=("default 0\nmres 24\nphoto_size 0\nsplit 222\nyearMonth");}date=(head+" "+yd);try {ou = new FileOutputStream(mFile);byte[] buffer = date.getBytes();ou.write(buffer);ou.flush();Toast.makeText(this,"写入成功",Toast.LENGTH_LONG).show();} catch (Exception e) {e.printStackTrace();} finally {try {if (ou != null) {ou.close();}} catch (Exception e) {e.printStackTrace();}}}public void YingY(View view){createFile();}}

读写文件要在AndroidManifest.xml里加入权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 允许创建和删除外部存储设备的文件 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions" /><applicationandroid:requestLegacyExternalStorage="true"

最重要一点是在build.gradle里更改targetSdk版本为28:

 targetSdk 28

下面是功能截图:

本app生成的default.ini文件用于更改华容录像手电日期时间,可获取系统当前时间也可自定义时间。

Android studio创建一个根目录生成手电修改参数app相关推荐

  1. Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,

    Android Studio SVN配置忽略文件 1.用Android Studio创建一个项目,会在根目录和Module目录下自动生成.gitignore文件,貌似是Git的配置文件,和SVN没有关 ...

  2. android studio创建一个类继承application_带你全方位了解Android中的Context

    这道题想考察什么? 是否熟悉Context类结构 是否熟悉Application,Activity,Service和Context的依赖关系 Application,Activity,Service中 ...

  3. Android Studio创建一个安卓项目

    目前不管事项目还是产品,都是有各种的APP.小程序,这里就跟大家分享一个App项目的搭建吧. 前提条件:需要安装JDK,这里要注意,AS要求JDK7及更高版本,这里就不必多说. 在新建项目之前,可以看 ...

  4. 如何用Android studio开发一个实现基本功能的新闻app?——简闻(源码及教程)

    一.系统需求分析 启动程序后,通过登陆注册进行程序,能够进行新闻资讯的实时更新,点击新闻可以查看新闻的详细内容,在详情页点击收藏,能够将新闻添加到收藏列表中,再次点击,取消收藏,并可以通过个人信息页面 ...

  5. android studio创建第一个安卓程序加载html5页面(一)

    前言 软件版本:android studio v1.0正式版,由于v0.x以来软件变化一直比较大,很多问题搜索的解决方案也都是v0.x版本时代的,故首先声明一下版本. 动机:由于工作中需要对移动端软件 ...

  6. Android Studio创建项目

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/47000873 创建项目 首先,先指出Andr ...

  7. Android Studio创建安卓项目工程

    Android Studio创建安卓项目工程 前言 因为想抽出时间复习考研因此提前接触安卓的一些开发,在实训的时候就可以不用再听讲学习,节省时间 随着前端混合开发和小程序技术的兴起,安卓开发的需求在日 ...

  8. android工程中的软件,通过Android Studio创建Android应用程序(附带解析)

    这一节我们主要来创建一个简单的 Android 的应用程序. 创建 HelloWorld 工程 启动 Android Studio,依次选择 File --> New --> New Pr ...

  9. android项目创建好慢,解决 Android Studio 创建项目时极其的慢的尴尬

    Android Studio 创建新项目的时候,会在进度条的界面滞留很久. 有时候一天都卡在这. 打开其它项目有些时候,也会出现这种情况. 创建工程 原因 在创建新项目的时候导致进度条一直转个不停的主 ...

最新文章

  1. 【 English 】与个人品质有关的英语词汇
  2. 2019_BUAAOO_第一单元总结
  3. linux同步硬件和系统时钟,liunx系统下时钟不同步会出现问题 怎么同步Linux 的系统时钟和硬件时钟?...
  4. linux之vim常见配置
  5. atoi java,leetcode题目8: 字符串转换整数 (atoi)(java)
  6. MapXtreme 根据名称搜索图元
  7. Delphi2010
  8. 基于置信加权池的全卷积保证颜色恒常性
  9. 自己动手制作系统安装盘
  10. 飞猪前端笔试题答案 仅跑过用例不保证健壮
  11. Java将正整数转换为负数,将负整数转换为正数
  12. 数学牛人们的轶事[下]
  13. 玉米生吃好还是熟吃好 各种情况分析
  14. 【QT Graphics/View】简易图元编辑器
  15. 基于声学模型共享的零资源韩语识别系统
  16. ENFI下载器:1元20G高速下载流量,首次使用送3G
  17. Android 备份(提取)apk
  18. 相似度计算方法(三) 余弦相似度
  19. as算法 matlab,APAP(As Projective As Possible)视差鲁棒的图像拼接算法
  20. 【ICLR 2018图神经网络论文解读】Graph Attention Networks (GAT) 图注意力模型

热门文章

  1. a+1、a+1、*(a+1)、*(a+1)、*(*(a+1))的区别
  2. windows10 双屏幕扩展后,窗口拖动方向的问题。
  3. 中国的互联网域名管理后果
  4. 中国人又当选欧洲科学院外籍院士啦!道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。
  5. Android视图系统的设计与实现
  6. 关于前端安全防范做了一些总结,供参考交流
  7. 随机存取存储器SRAM
  8. PHP微商城开源代码实例
  9. $OEM$文件夹的使用 (By无约而来)
  10. 关于OpenStreetMap数据