एक्टिविटी स्टैक में शीर्ष (टॉप) एक्टिविटी का नाम प्राप्त करना
यह उदाहरण दर्शाता है कि ActivityManager का उपयोग करके वर्तमान में चल रही शीर्ष एक्टिविटी का नाम कैसे प्राप्त करें।
⚠️ महत्वपूर्ण नोट
Android 5.0 (API 21) और उससे ऊपर के वर्जन में getRunningTasks() डिप्रिकेटेड है और केवल सिस्टम ऐप्स के लिए काम करता है। सामान्य ऐप्स के लिए यह केवल अपनी ही एक्टिविटी की जानकारी दे पाता है। आधुनिक एंड्रॉइड वर्जन के लिए UsageStatsManager का उपयोग करना बेहतर है।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट फ़ाइल
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp" />
</LinearLayout>
चरण 3: MainActivity.java (लीगेसी मेथड)
package com.example.myapplication;
import android.app.ActivityManager;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private TextView textView;
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
// लीगेसी मेथड - केवल पुराने एंड्रॉइड वर्जन/सिस्टम ऐप्स के लिए
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
if (tasks != null && !tasks.isEmpty()) {
String topActivity = tasks.get(0).topActivity.toString();
textView.setText("शीर्ष एक्टिविटी: " + topActivity);
} else {
textView.setText("कोई टास्क नहीं मिला");
}
}
}
आधुनिक विकल्प (Android 5.0+)
नए एंड्रॉइड वर्जन के लिए UsageStatsManager का उपयोग करें:
// मैनिफेस्ट में परमिशन जोड़ें
// <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions"/>
// कोड में:
UsageStatsManager usm = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> stats = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*3600, time);
if (stats != null && !stats.isEmpty()) {
UsageStats topApp = stats.stream().max((u1, u2) -> Long.compare(u1.getLastTimeUsed(), u2.getLastTimeUsed())).orElse(null);
if (topApp != null) {
textView.setText("शीर्ष ऐप: " + topApp.getPackageName());
}
}
ऐप चलाएं
पुराने एंड्रॉइड वर्जन पर यह शीर्ष एक्टिविटी दिखाएगा। नए वर्जन पर केवल अपनी ऐप की जानकारी दिखेगी।
