Android实现获取前台应用信息
本文介绍了在Android中获取前台应用信息的方法实现。通过ActivityManager的getRunningTasks(1)方法获取当前运行任务,从中提取topActivity的包名和类名。文章包含Kotlin代码示例,展示了获取前台应用信息的具体实现,包括布局设计和测试代码。效果展示截图验证了功能有效性,最后总结了该方法的核心技术点,并指出后续可扩展获取版本号、运行状态等更多应用信息。源码地
·
Android实现获取前台应用信息
1.前言:
之前需要获取在后台运行的App信息,比如包名、版本这些常规的,今天是讲解获取在前台的App信息,虽然App在前台,但是具体的信息可能不知道,今天就尝试获取一下,然后显示出来.
2.布局如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="200dp"
android:layout_height="60dp"
android:text="获取前台应用"
android:textColor="@color/white"
android:textSize="20sp"
android:gravity="center"
android:background="@color/design_default_color_primary_dark"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/checkButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="前台应用信息"
android:textColor="@color/white"
android:background="@color/design_default_color_primary_dark"
android:gravity="center"
android:layout_marginStart="60dp"
android:layout_marginEnd="60dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
3.测试代码如下:
package com.example.appforegrounddemo
import android.annotation.SuppressLint
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import android.app.ActivityManager
class MainActivity : AppCompatActivity() {
private lateinit var resultTextView: TextView
private lateinit var checkButton: TextView
private val TAG = "MainTest"
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
resultTextView = findViewById(R.id.textView)
checkButton = findViewById(R.id.checkButton)
resultTextView.setOnClickListener {
val foregroundApp = getForegroundApp()
checkButton.text = buildString {
append("前台应用: ")
append(foregroundApp)
}
Log.d(TAG, "===前台应用===: $foregroundApp")
Toast.makeText(this@MainActivity, "前台应用信息为: $foregroundApp", Toast.LENGTH_SHORT).show()
}
}
/**
* 获取前台app信息
*/
private fun getForegroundApp(): String {
val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager
val tasks = am.getRunningTasks(1)
if (tasks.isNotEmpty()) {
val taskInfo = tasks[0]
return """
${taskInfo.topActivity?.packageName}
${taskInfo.topActivity?.className}
""".trimIndent()
}
return "无法获取前台应用"
}
}
4.实现效果截图:

5.总结:
- 获取前台应用信息的核心方法 am.getRunningTasks(1)
- 我们也可以获取后台应用信息,比如应用是否运行、崩溃等等
- 当然还有其他方式,这里只是简单介绍一下.
- 后面会讲解根据具体业务去获取App的信息,版本号、包名、运行状态等.
6.源码地址如下:
https://gitee.com/jackning_admin/app-fore-ground-demo
更多推荐



所有评论(0)