होम बटन दबाने का पता लगाने के लिए onUserLeaveHint() का उपयोग - लेकिन होम बटन को पूरी तरह ओवरराइड/ब्लॉक नहीं किया जा सकता।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट
res/layout/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Press Home Button"
android:textSize="16sp"
android:textStyle="bold" />
</RelativeLayout>
चरण 3: होम बटन डिटेक्शन
src/MainActivity.java:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onUserLeaveHint() {
// होम बटन दबाया गया (या ऐप बैकग्राउंड में गया)
Toast.makeText(getApplicationContext(), "Home Button is Pressed", Toast.LENGTH_SHORT).show();
super.onUserLeaveHint();
}
}
⚠️ महत्वपूर्ण सीमाएं
- होम बटन को ब्लॉक/ओवरराइड नहीं किया जा सकता - यह सिस्टम-स्तरीय कार्य है
onUserLeaveHint()तब कॉल होता है जब:- उपयोगकर्ता होम बटन दबाता है
- फोन कॉल आता है
- अन्य ऐप लॉन्च होता है
- स्क्रीन लॉक होती है
- यह बैक बटन के लिए काम नहीं करता (उसके लिए
onBackPressed()उपयोग करें) - लॉन्चर ऐप्स के लिए अलग व्यवहार
वैध उपयोग के मामले
- स्थिति सेव करें: बैकग्राउंड जाने से पहले डेटा सेव करें
- मीडिया रोकें: वीडियो/म्यूजिक पॉज़ करें
- संवेदनशील UI छिपाएं: पासवर्ड फील्ड क्लियर करें
- एनालिटिक्स: सत्र समाप्ति ट्रैक करें
कियोस्क/लॉन्चर मोड (विशेष)
पूरी तरह होम बटन नियंत्रण के लिए:
- कियोस्क मोड: DevicePolicyManager + lockTaskMode
- कस्टम लॉन्चर: DEFAULT कैटेगरी के साथ होम इंटेंट फिल्टर
- Screen Pinning:
startLockTask()(API 21+)
चरण 4: मैनिफेस्ट
मानक मैनिफेस्ट।