在 Android 开发中,您可以使用Log类来打印系统日志。但是,默认情况下,系统日志只会输出到控制台,而不会保存到 SD 卡。要将系统日志保存到 SD 卡,您可以按照以下步骤进行操作:

  1. 在您的 AndroidManifest.xml 文件中,添加 WRITE_EXTERNAL_STORAGE 权限:
<uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE' />
  1. 在您的代码中,使用Log 类的方法来打印日志。例如:
import android.util.Log;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = 'MyApp';

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d(TAG, 'This is a debug log');
        Log.e(TAG, 'This is an error log');
    }
}
  1. 创建一个辅助方法,用于将日志保存到 SD 卡。例如:
import android.os.Environment;
import android.util.Log;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = 'MyApp';
    private static final String LOG_FILE_NAME = 'app_log.txt';

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.d(TAG, 'This is a debug log');
        Log.e(TAG, 'This is an error log');

        saveLogToFile();
    }

    private void saveLogToFile() {
        String log = readLogFile();
        String newLog = log + getFormattedLog();

        try {
            File logFile = new File(Environment.getExternalStorageDirectory(), LOG_FILE_NAME);
            FileWriter writer = new FileWriter(logFile);
            writer.append(newLog);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private String readLogFile() {
        File logFile = new File(Environment.getExternalStorageDirectory(), LOG_FILE_NAME);
        if (!logFile.exists()) {
            return '';
        }

        StringBuilder log = new StringBuilder();
        try {
            BufferedReader reader = new BufferedReader(new FileReader(logFile));
            String line;
            while ((line = reader.readLine()) != null) {
                log.append(line).append('
');
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return log.toString();
    }

    private String getFormattedLog() {
        String timeStamp = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss', Locale.getDefault()).format(new Date());
        return '[' + timeStamp + '] ' + TAG + ': ' + 'This is a new log' + '
';
    }
}

以上代码会将系统日志保存到 SD 卡上的名为 app_log.txt 的文件中。每次调用 saveLogToFile() 方法时,它会将新的日志追加到文件末尾。请注意,要使用 SD 卡,您的设备必须具有已挂载的外部存储器,并且用户已授予 WRITE_EXTERNAL_STORAGE 权限。

Android App 打印系统日志到 SD 卡 - 完整指南

原文地址: https://www.cveoy.top/t/topic/qqUH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录