उन्नत नोटिफिकेशन फीचर्स
एक ही नोटिफिकेशन में वाइब्रेशन, कस्टम साउंड, एक्शन बटन, और एक्सपैंडेड बिग टेक्स्ट स्टाइल कैसे जोड़ें।
चरण 1-2: प्रोजेक्ट और लेआउट (ConstraintLayout में बटन)
चरण 3: MainActivity.java
package app.tutorialspoint.com.notifyme;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private static final String DEFAULT_CHANNEL_ID = "default";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnCreateNotification = findViewById(R.id.btnCreateNotification);
btnCreateNotification.setOnClickListener(v -> {
// टैप पर खुलने वाला इंटेंट
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent resultPendingIntent = PendingIntent.getActivity(
MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE
);
// एक्शन बटन के लिए अलग इंटेंट
Intent actionIntent = new Intent(getApplicationContext(), MainActivity.class);
actionIntent.setAction("ACTION_ADD");
PendingIntent actionPendingIntent = PendingIntent.getActivity(
MainActivity.this, 1, actionIntent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE
);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, DEFAULT_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setContentTitle("उन्नत नोटिफिकेशन")
.setContentText("वाइब्रेशन, साउंड, एक्शन और बिग व्यू के साथ")
.setStyle(new NotificationCompat.BigTextStyle().bigText(
"बिग व्यू स्टाइल: यह लंबा टेक्स्ट है जो एक्सपैंड होने पर पूरी तरह दिखता है। " +
"Android 7.0+ में BigTextStyle, BigPictureStyle, InboxStyle, MessagingStyle उपलब्ध हैं।"))
.setContentIntent(resultPendingIntent)
.addAction(R.drawable.ic_launcher_foreground, "जोड़ें", actionPendingIntent)
.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000}) // वाइब्रेशन पैटर्न
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify((int) System.currentTimeMillis(), builder.build());
});
}
}
चरण 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.notifyme">
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
नोटिफिकेशन स्टाइल्स तुलना
| स्टाइल | उपयोग | मुख्य मेथड |
|---|---|---|
| BigTextStyle | लंबा टेक्स्ट | .bigText(String) |
| BigPictureStyle | बड़ी इमेज | .bigPicture(Bitmap) |
| InboxStyle | सूची/संदेश | .addLine(CharSequence) |
| MessagingStyle | चैट UI | .addMessage(Message) |
| MediaStyle | मीडिया कंट्रोल | .setMediaSession(token) |
एक्शन बटन
.addAction(icon, title, pendingIntent)- नोटिफिकेशन में बटन जोड़ता है- Android 7.0+ में एक्शन डायरेक्ट रिप्लाई (RemoteInput) भी सपोर्ट करते हैं
- अधिकतम 3 एक्शन दिखते हैं (कॉम्पैक्ट व्यू में)
वाइब्रेशन पैटर्न
long[]{delay, vibrate, delay, vibrate...} - पहला मान प्रारंभिक देरी है।