Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

नोटिफिकेशन क्लिक से एंड्रॉइड एक्टिविटी में पैरामीटर कैसे भेजें?

नोटिफिकेशन से एक्टिविटी में डेटा पास करना

जब यूजर नोटिफिकेशन पर टैप करता है, तो PendingIntent के जरिए एक्टिविटी शुरू होती है। उस इंटेंट में एक्स्ट्रा डालकर डेटा पास किया जा सकता है। एक्टिविटी में onNewIntent() ओवरराइड करके वह डेटा पढ़ें।

चरण 1: नया प्रोजेक्ट

Android Studio में प्रोजेक्ट बनाएं।

चरण 2: लेआउट — टेक्स्ट व्यू + बटन

<?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:id="@+id/tvNotify"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btnNotify"
        android:layout_margin="16dp" />

    <Button
        android:id="@+id/btnNotify"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="16dp"
        android:onClick="createNotification"
        android:text="Create Notification" />
</RelativeLayout>

चरण 3: MainActivity — onNewIntent में डेटा पढ़ें

package app.tutorialspoint.com.notifyme;

import android.app.NotificationChannel;
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.TextView;

public class MainActivity extends AppCompatActivity {
    public static final String NOTIFICATION_CHANNEL_ID = "10001";
    private final static String default_notification_channel_id = "default";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        onNewIntent(getIntent()); // कोल्ड स्टार्ट के लिए
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Bundle extras = intent.getExtras();
        if (extras != null && extras.containsKey("NotificationMessage")) {
            String msg = extras.getString("NotificationMessage");
            TextView tvNotify = findViewById(R.id.tvNotify);
            tvNotify.setText(msg);
        }
    }

    public void createNotification(View view) {
        Intent notificationIntent = new Intent(MainActivity.this, MainActivity.class);
        notificationIntent.putExtra("NotificationMessage", "I am from Notification");
        notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        notificationIntent.setAction(Intent.ACTION_MAIN);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        PendingIntent resultIntent = PendingIntent.getActivity(MainActivity.this, 0, notificationIntent, 0);

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(MainActivity.this, default_notification_channel_id)
            .setSmallIcon(R.drawable.ic_launcher_foreground)
            .setContentTitle("Test")
            .setContentText("Hello! This is my first push notification")
            .setContentIntent(resultIntent);

        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            int importance = NotificationManager.IMPORTANCE_HIGH;
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
            mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
            assert mNotificationManager != null;
            mNotificationManager.createNotificationChannel(notificationChannel);
        }

        assert mNotificationManager != null;
        mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.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">

    <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>
    </application>
</manifest>

कुंजी बिंदु

  1. PendingIntent बनाते समय इंटेंट में putExtra() से डेटा डालें
  2. FLAG_ACTIVITY_SINGLE_TOP — मौजूदा इंस्टेंस को पुनः उपयोग करता है
  3. onNewIntent() ओवरराइड करें — वही इंस्टेंस होने पर यह कॉल होता है
  4. onCreate() में भी onNewIntent(getIntent()) कॉल करें — कोल्ड स्टार्ट के लिए

अलग-अलग एक्शन के लिए अलग डेटा

अगर नोटिफिकेशन में कई एक्शन बटन हैं, तो हर एक्शन के लिए अलग PendingIntent बनाएं जिसमें अलग requestCode और अलग एक्स्ट्रा हो:

Intent action1Intent = new Intent(this, MainActivity.class).putExtra("action", "reply");
PendingIntent action1Pending = PendingIntent.getActivity(this, 1, action1Intent, PendingIntent.FLAG_IMMUTABLE);

Intent action2Intent = new Intent(this, MainActivity.class).putExtra("action", "delete");
PendingIntent action2Pending = PendingIntent.getActivity(this, 2, action2Intent, PendingIntent.FLAG_IMMUTABLE);

ऐप चलाएं, नोटिफिकेशन बनाएं, उस पर टैप करें — टेक्स्ट व्यू में मैसेज दिखेगा।

  1. एंड्रॉइड में एक एक्टिविटी से दूसरी एक्टिविटी में इमेज कैसे पास करें एंड्रॉइड में एक एक्टिविटी से दूसरी एक्टिविटी में इमेज कैसे पास करें

    Intent के माध्यम से इमेज रिसोर्स ID या बिटमैप पास करना एंड्रॉइड में एक एक्टिविटी से दूसरी में इमेज पास करने के दो मुख्य तरीके हैं: रिसोर्स ID (इंट/ड्रॉएबल रेफरेंस) पास करना (कुशल, केवल ऐप-इंटरनल इमेज के लिए) या बिटमैप/बाइट ऐरे पास करना (किसी भी इमेज के लिए, लेकिन मेमोरी-इंटेंसिव)। चरण 1: नया प्रोजे

  1. Android में एक Fragment से दूसरे Fragment में डेटा कैसे भेजें? Android में एक Fragment से दूसरे Fragment में डेटा कैसे भेजें?

    परिचय यह ट्यूटोरियल दर्शाता है कि Android में Fragment के बीच डेटा कैसे पास करें। हम ViewPager और TabLayout का उपयोग करके दो फ्रैगमेंट्स बनाएंगे और इंटरफेस के माध्यम से डेटा ट्रांसफर करेंगे। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: मुख्य लेआउट (res

  1. आईफोन से Android में वीडियो कैसे भेजें आईफोन से Android में वीडियो कैसे भेजें

    मुझे एक नया Huawei फोन मिला है और मुझे आश्चर्य है कि अपने पुराने आईफोन से नए Android फोन में वीडियो सीधे कैसे भेजें। क्या कोई मुझे बता सकता है कि आईफोन से Android में वीडियो कैसे ट्रांसफर करें? आईफोन से Android पर स्विच करने के बारे में सबसे कठिन चीजों में से एक है एक डिवाइस से दूसरे में डेटा ट्रा