pull/871/merge
soberGou 2 years ago committed by GitHub
commit 8470f01647
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 19
      app/src/main/AndroidManifest.xml
  2. 37
      app/src/main/java/com/lizongying/mytv/MainActivity.kt
  3. 43
      app/src/main/java/com/lizongying/mytv/logFile.java

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature
android:name="android.hardware.touchscreen"
@ -11,9 +12,14 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_LOGS"
tools:ignore="ProtectedPermissions" />
<application
android:name=".MyTVApplication"
@ -26,7 +32,8 @@
android:networkSecurityConfig="@xml/network"
android:supportsRtl="true"
android:theme="@style/Theme.MyTV"
android:usesCleartextTraffic="true">
android:usesCleartextTraffic="true"
tools:ignore="UnusedAttribute">
<activity
android:name=".MainActivity"
android:exported="true"
@ -34,7 +41,6 @@
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
@ -55,7 +61,8 @@
android:name=".NetworkChangeReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"
tools:ignore="BatteryLife" />
</intent-filter>
</receiver>
@ -75,4 +82,4 @@
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>
</manifest>

@ -1,7 +1,9 @@
package com.lizongying.mytv
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.os.Handler
import android.os.Looper
import android.util.Log
@ -15,6 +17,8 @@ import android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
import android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
import android.view.WindowManager
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
@ -24,7 +28,11 @@ import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
import java.io.File
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
import android.Manifest
class MainActivity : FragmentActivity(), Request.RequestListener, OnSharedPreferenceChangeListener {
@ -68,6 +76,32 @@ class MainActivity : FragmentActivity(), Request.RequestListener, OnSharedPrefer
window.setAttributes(lp)
}
// 检查并请求权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(this, "应用需要写入存储的权限以保存日志文件。", Toast.LENGTH_LONG).show()
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE), PERMISSION_REQUEST_CODE)
}
}
val dateFormat = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault())
val currentTime = dateFormat.format(Date())
val fileName = "myTvLogFile_$currentTime.txt"
try {
val downloadsDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
val outputFile = File(downloadsDirectory, fileName)
if (!outputFile.exists()) {
outputFile.createNewFile()
}
logFile.startCapturingToFile(outputFile)
Log.d(TAG, "File created: ${outputFile.absolutePath}")
} catch (e: Exception) {
Log.e(TAG, "Error creating file", e)
}
window.decorView.apply {
systemUiVisibility =
@ -624,6 +658,7 @@ class MainActivity : FragmentActivity(), Request.RequestListener, OnSharedPrefer
private companion object {
const val TAG = "MainActivity"
const val PERMISSION_REQUEST_CODE = 1
}
override fun onSharedPreferenceChanged(key: String) {

@ -0,0 +1,43 @@
package com.lizongying.mytv;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import android.util.Log;
public class logFile {
private static final String TAG = "logFile"; // 日志标签定义
public static void startCapturingToFile(File outputFile) {
new Thread(() -> {
Process clearProcess = null;
Process logcatProcess = null;
try {
// 清除当前logcat缓存
clearProcess = Runtime.getRuntime().exec("logcat -c");
logcatProcess = Runtime.getRuntime().exec("logcat");
BufferedReader reader = new BufferedReader(new InputStreamReader(logcatProcess.getInputStream()));
BufferedWriter writer =new BufferedWriter(new FileWriter(outputFile, true));
String line;
while ((line = reader.readLine()) != null) {
writer.append(line).append("\n");
}
writer.flush();
writer.close();
reader.close();
} catch (Exception e) {
Log.e(TAG, "Error capturing log to file", e);
} finally {
if (clearProcess != null) clearProcess.destroy();
if (logcatProcess != null) logcatProcess.destroy();
}
}).start();
}
}
Loading…
Cancel
Save