java-activity启动关闭,交换数据,返回结果,存储

activity的启动与关闭

Mainactivity

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //mainactivty的布局方式采用的是activity_main.xml
        Button btn1 = (Button)findViewById(R.id.btn1);
        btn1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,Zqhactivity.class);
                startActivity(intent);
                //改成finish()也可以返回调用它的activity中
                //如果是mainactivity一旦finish就直接退出了
            }
        });
    }
}

zqhactivity

package com.example.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

//自己写的activity继承自android.app.Activity
public class Zqhactivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zqh); //给现在的这个activity设置好布局文件
        Button backbtn = (Button) findViewById(R.id.backbtn);
        backbtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Zqhactivity.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/btn1"
        android:text="切换"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</RelativeLayout>

activity_zqh.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <View
        android:id="@+id/view1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FF000000">
    </View>
    <Button
        android:layout_width="200dp"
        android:layout_height="70dp"
        android:id="@+id/backbtn"
        android:text="返回"
        />
    <View
        android:id="@+id/view2"
        android:background="#FFFACD"
        android:layout_alignParentBottom="true"
        android:layout_width="100dp"
        android:layout_height="100dp">
    </View>
    <View
        android:id="@+id/view3"
        android:background="#E6E6FA"
        android:layout_alignParentRight="true"
        android:layout_width="100dp"
        android:layout_height="100dp">
    </View>
    <View
        android:id="@+id/view4"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:background="#2F4F4F"
        android:layout_width="100dp"
        android:layout_height="100dp">
    </View>
    <View
        android:id="@+id/rightbox"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_toRightOf="@id/view1"
        android:background="#FFFF00"
        >
    </View>
    <View
        android:id="@+id/bottombox"
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:background="#8B8B7A"
        android:layout_below="@id/rightbox">
    </View>
</LinearLayout>

AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <!--以下是将自己写的activity注册到配置文件中-->
        <activity android:name=".Zqhactivity"
            android:label="新activity"></activity>
        <activity android:name=".MainActivity">
            <!--以下的四行代码可以将该activity配置为程序的入口activity(主体activity)-->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Activity间交换数据

 

 Mainactivity

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //mainactivty的布局方式采用的是activity_main.xml
        Button btn1 = (Button)findViewById(R.id.submit);
        btn1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                EditText mail_text = (EditText) findViewById(R.id.mail_text);
                EditText username = (EditText) findViewById(R.id.username);
                Intent intent = new Intent(MainActivity.this,Zqhactivity.class);
                Bundle bundle = new Bundle();  //bundle 可以存储key和value的键值对,然后放到
                //intent里面,然后随着intent传到其他的activity中
                bundle.putCharSequence("mail",mail_text.getText().toString());
                bundle.putCharSequence("username",username.getText().toString());
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
    }
}

Zqhactivity

package com.example.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

//自己写的activity继承自android.app.Activity
public class Zqhactivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zqh); //给现在的这个activity设置好布局文件
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        String mail = bundle.getString("mail");
        String username = bundle.getString("username");
        TextView textView = findViewById(R.id.textview);
        textView.setText("mail:"+ mail + "username:" + username);
        Button backbtn = (Button) findViewById(R.id.backbtn);
        backbtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Zqhactivity.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <EditText
        android:id="@+id/mail_text"
        android:layout_width="200dp"
        android:layout_height="70dp"
        android:hint="mail" />
    <EditText
        android:id="@+id/username"
        android:layout_width="200dp"
        android:layout_height="70dp"
        android:hint="账户名" />

    <Button
        android:id="@+id/submit"
        android:layout_width="200dp"
        android:layout_height="70dp"
        android:text="提交" />
</LinearLayout>

activity_zqh

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/textview"
        android:layout_width="200dp"
        android:layout_height="70dp"/>

    <Button
        android:layout_width="200dp"
        android:layout_height="70dp"
        android:id="@+id/backbtn"
        android:text="返回"
        />
</LinearLayout>

调用另一个activity并返回结果

实现点换头像,然后弹出头像选择,选择完头像之后自动返回主界面并且更新头像的显示

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:id="@+id/imgshow"
        android:layout_gravity="center"
        android:src="@drawable/img0"
        />

    <Button
        android:id="@+id/choose"
        android:layout_width="200dp"
        android:layout_height="70dp"
        android:layout_gravity="center"
        android:text="选择头像" />
</LinearLayout>

ceil.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/img"
        android:layout_width="100dp"
        android:layout_height="75dp"/>
</LinearLayout>

activity_zqh.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="3"></GridView>
</LinearLayout>

Mainactivity

package com.example.myapplication;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //mainactivty的布局方式采用的是activity_main.xml
        Button btn1 = (Button)findViewById(R.id.choose);
        btn1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(MainActivity.this,Zqhactivity.class);
                Bundle bundle = new Bundle();  //bundle 可以存储key和value的键值对,然后放到
                startActivityForResult(intent,0x11);
            }
        });
    }
//选择好头像返回东西过来的时候,需要对返回过来的值进行处理,需要重写onactivityresult
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0x11 && resultCode == 0x11){  //请求码和结果码相同的时候对intent
            // 内的返回数据进行解包
            Bundle bundle = data.getExtras();
            int imgid = bundle.getInt("imgid");
            ImageView imageView = (ImageView)findViewById(R.id.imgshow);
            imageView.setImageResource(imgid);
        }
    }
}

Zqhactivity

package com.example.myapplication;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//自己写的activity继承自android.app.Activity
public class Zqhactivity extends Activity {
    int[] paint_path = new int[]{
            R.drawable.img0,R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4
    };  //paint_path里面装的是图片的id号
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zqh); //给现在的这个activity设置好布局文件
        GridView gridView = (GridView) this.findViewById(R.id.gridview);
        List<Map<String,Object>> listitem = new ArrayList<Map<String,Object>>();
        for (int i = 0;i<paint_path.length;i++){
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("image",paint_path[i]);  //map相当于字典,key是image,value是图片的id号
            listitem.add(map);
        }
        System.out.println("sssss"+listitem.size());
        //simpleadapter的5项(第一项是上下文this,第二项是List<Map<String,Object>>列表,
        // 第三项是子网格的布局文件,第四项是一个字符串数组,用来存放List<Map<String,Object>>里面
        //的那些key,在这里面就是"image",第五项是一个整形数组,里面放的是子网格的imageview的id号
        SimpleAdapter simpleAdapter = new SimpleAdapter(this,listitem,
                R.layout.ceil,new String[]{"image"},new int[]{R.id.img});
        gridView.setAdapter(simpleAdapter);

        //上面是把图片装进网格,接下来是监听网格内的哪一个图像被点击了。
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = getIntent(); // 获取从mainactivity传过来的intent
                Bundle bundle = new Bundle();
                bundle.putInt("imgid",paint_path[position]); //按下的是paint_path的position位
                intent.putExtras(bundle);
                setResult(0x11,intent);
                finish(); // 返回调用此activity的activity
            }
        });
    }
}

 存储

 

轻量级存储sharedpreference(键值对存储)

Mainactivity

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {
    private TextView sc;
    private EditText username;
    private EditText password;
    private Button save_btn;
    private Button show_btn;
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //mainactivty的布局方式采用的是activity_main.xml
        username = findViewById(R.id.username);
        password = findViewById(R.id.password);
        save_btn = findViewById(R.id.save_btn);
        show_btn =findViewById(R.id.show_btn);
        sc = findViewById(R.id.sc);
        //生成sharedPreferences轻量数据存储的时候,第一个位置是生成的文件的名字
        //第二个是模式的名称,MODE_PRIVATE是除了本应用有访问权限,其他应用都没有访问权限
        //用MODE_APPEND可以追加不覆盖填写
        sharedPreferences = this.getSharedPreferences("data.txt",MODE_PRIVATE);
        editor = sharedPreferences.edit();
    }
    public void save_btn(View view){
        try{
            //sharedPreferences的edit存数据的时候是按照键值对的形式来存储的,
            editor.putString("username",username.getText().toString());
            editor.putString("password",password.getText().toString());
            editor.apply();
        }catch (Exception erro){
            System.out.println(erro);
        }
    }
    public void show_btn(View view){
        try{
            //sharedPreferences.getString("username","")的前面是存储数据时的key值,后面那个是
            //如果存储的数据里面没有这个key和value的时候显示的默认值
            sc.setText(sharedPreferences.getString("username","") + " " +
                    sharedPreferences.getString("password","") );
        }catch (Exception erro){
            System.out.println(erro);
        }
    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/sc"
        android:layout_width="300dp"
        android:layout_height="70dp"/>
    <EditText
        android:id="@+id/username"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="username"/>
    <EditText
        android:id="@+id/password"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="password"/>
    <Button
        android:id="@+id/save_btn"
        android:onClick="save_btn"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="保存"/>
    <Button
        android:id="@+id/show_btn"
        android:onClick="show_btn"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="显示"/>
</LinearLayout>

内部存储

 

 

MainActivity

package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {
    private TextView sc;
    private EditText username;
    private EditText password;
    private Button save_btn;
    private Button show_btn;
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //mainactivty的布局方式采用的是activity_main.xml
        username = findViewById(R.id.username);
        password = findViewById(R.id.password);
        save_btn = findViewById(R.id.save_btn);
        show_btn =findViewById(R.id.show_btn);
        sc = findViewById(R.id.sc);
    }
    public void save_btn(View view){
        try{
            save_file(username.getText().toString() + " " + password.getText().toString());
        }catch (Exception erro){
            System.out.println(erro);
        }
    }
    public void show_btn(View view){
        try{
            String content = read_file();
            sc.setText(content);
        }catch (Exception erro){
            System.out.println(erro);
        }
    }
    private void save_file(String content) {
        FileOutputStream fileOutputStream = null;   //先定义fileOutputStream是空值
        try {
            fileOutputStream = openFileOutput("data.txt", MODE_PRIVATE);
            fileOutputStream.write(content.getBytes());  //将字符串写入文件夹
        } catch (Exception erro) {
            System.out.println(erro);
        } finally {  //这样写可以保证最后fileOutputStream必然被关闭
            try {
                if (fileOutputStream != null) {
                    fileOutputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    private String read_file() {
        FileInputStream fileInputStream = null;   //先定义fileInputStream是空值
        try {
            fileInputStream = openFileInput("data.txt");  //打开指定的文件夹进行读取
            byte[] buff = new byte[1024]; //每次读取1024个字节金buff
            StringBuilder sb = new StringBuilder("");  //StringBuilder的append可以对字符串进行拼接
            int len = 0;
            while ((len = fileInputStream.read(buff))>0){  //当读取出来的长度仍然大于0便一直读,并
                // 且进行字符串的拼接
                sb.append(new String(buff,0,len));
            }
            return sb.toString();
        } catch (Exception erro) {
            System.out.println(erro);
        }
        finally {  //确保最后fileInputstream必然被关闭
            if (fileInputStream != null){
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/sc"
        android:layout_width="300dp"
        android:layout_height="70dp"/>
    <EditText
        android:id="@+id/username"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="username"/>
    <EditText
        android:id="@+id/password"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="password"/>
    <Button
        android:id="@+id/save_btn"
        android:onClick="save_btn"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="保存"/>
    <Button
        android:id="@+id/show_btn"
        android:onClick="show_btn"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="显示"/>

</LinearLayout>

 外部存储

坑多,在安卓6以下的版本,直接minifest加入两条permission语句就行了,在安卓6以上的版本需要动态申请权限,而在安卓10以上的版本,还需要加上android:requestLegacyExternalStorage="true"

 AndroidManifest中需要加入的项

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



android:requestLegacyExternalStorage="true"

Mainactivity

package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    private Permission pm;
    private TextView sc;
    private EditText username;
    private EditText password;
    private Button save_btn;
    private Button show_btn;
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  //mainactivty的布局方式采用的是activity_main.xml
        username = findViewById(R.id.username);
        password = findViewById(R.id.password);
        save_btn = findViewById(R.id.save_btn);
        show_btn =findViewById(R.id.show_btn);
        sc = findViewById(R.id.sc);
        pm = new Permission();
        pm.cheackpermission(this);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 1000){
            for (int i = 0;i<grantResults.length;i++){
                if (grantResults[i] != PackageManager.PERMISSION_GRANTED){
                    Log.e("permission",permissions[i] + "被拒绝");
                }
            }
        }
    }

    public void save_btn(View view){
        try{
            save_file(username.getText().toString() + " " + password.getText().toString());
        }catch (Exception erro){
            System.out.println(erro);
        }
    }
    public void show_btn(View view){
        try{
            String content = read_file();
            sc.setText(content);
        }catch (Exception erro){
            System.out.println(erro);
        }
    }
    private void save_file(String content) {
        FileOutputStream fileOutputStream = null;   //先定义fileOutputStream是空值
        try {
            boolean sdCardExist = Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED);// 判断sd卡是否存在
            System.out.println("外部存储是否可用" + sdCardExist);
            System.out.println("外部存储的基本路径" + Environment.getExternalStorageDirectory()
                    .getAbsolutePath());
            File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
                    + File.separator + "Zqhfile");
            if (!dir.exists()) {
                boolean mkdirs = dir.mkdirs();
                if (!mkdirs) {
                    Log.e("TAG", "文件夹创建失败");
                } else {
                    Log.e("TAG", "文件夹创建成功");
                }
            }
            File file = new File(dir + File.separator + "data.txt"); //保存的文件是zqhfile目录下面的data.txt
            if (!file.exists()){
                System.out.println("没有此文件");
                file.createNewFile();  //如果不存在data.txt就创建zqhfile
            }
            fileOutputStream = new FileOutputStream(file);
            fileOutputStream.write(content.getBytes());  //将字符串写入文件夹
        } catch (Exception erro) {
            System.out.println(erro);
        } finally {  //这样写可以保证最后fileOutputStream必然被关闭
            try {
                if (fileOutputStream != null) {
                    fileOutputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    private String read_file() {
        FileInputStream fileInputStream = null;   //先定义fileInputStream是空值
        try {
            File file = new File(Environment.getExternalStorageDirectory()
            + File.separator + "zqhfile" + File.separator + "data.txt");
            fileInputStream = new FileInputStream(file);  //打开指定的文件夹进行读取
            byte[] buff = new byte[1024]; //每次读取1024个字节金buff
            StringBuilder sb = new StringBuilder("");  //StringBuilder的append可以对字符串进行拼接
            int len = 0;
            while ((len = fileInputStream.read(buff))>0){  //当读取出来的长度仍然大于0便一直读,并
                // 且进行字符串的拼接
                sb.append(new String(buff,0,len));
            }
            return sb.toString();
        } catch (Exception erro) {
            System.out.println(erro);
        }
        finally {  //确保最后fileInputstream必然被关闭
            if (fileInputStream != null){
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}

Permission

package com.example.myapplication;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import java.util.ArrayList;
import java.util.List;

public class Permission {
    //高版本的安卓系统不仅需要在manifest中写权限
    // 程序中也需要动态申请权限,这是要申请的权限
    private String[] permission = {
            Manifest.permission.WRITE_EXTERNAL_STORAGE,  //外部存储写权限
            Manifest.permission.READ_EXTERNAL_STORAGE,   //外部存储读权限
    };
    private List<String> need_permission = new ArrayList();
    private int REQUEST_CODE = 1000;

    public void cheackpermission(Activity activity){
        //在当前安卓系统版本大于6的时候才需要进行动态权限的申请
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            for (int i = 0;i<permission.length;i++){
                //逐条查询permission里面的权限看看是否都有,如果没有的话
                if (ContextCompat.checkSelfPermission(activity,permission[i]) !=
                        PackageManager.PERMISSION_GRANTED){
                    need_permission.add(permission[i]);
                }
            }
            //如果need_permission的大小大于0,说明需要有需要进行权限申请的,进行权限的申请
            if (need_permission.size() > 0){
                requestPermission(activity);
            }
        }
    }

    public void requestPermission(Activity activity){
        ActivityCompat.requestPermissions(activity,
                //将需要进行动态权限获取的need_permission列表变为字符串数组
                need_permission.toArray(new String[need_permission.size()]),REQUEST_CODE);
    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/sc"
        android:layout_width="300dp"
        android:layout_height="70dp"/>
    <EditText
        android:id="@+id/username"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="username"/>
    <EditText
        android:id="@+id/password"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="password"/>
    <Button
        android:id="@+id/save_btn"
        android:onClick="save_btn"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="保存"/>
    <Button
        android:id="@+id/show_btn"
        android:onClick="show_btn"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:hint="显示"/>

</LinearLayout>

 

posted @ 2021-06-03 10:41  克莱比-Kirby  阅读(209)  评论(0)    收藏  举报