देता है मैंने एक वीडियो फ़ाइल डाउनलोड करने और इसे एसडी कार्ड में स्टोर करने के लिए एक एप्लीकेशन विकसित किया है। प्रक्रिया में मैं NotificationManager
का उपयोग कर स्टेटस बार अधिसूचना के रूप में डाउनलोड की प्रगति और स्थिति को भी अपडेट करता हूं।एंड्रॉइड getIntent() पहला इरादा
मेरी कक्षा DownloadTask.java
कहलाती है AsyncTask
फैली हुई है। तो यहां मैं onProgressUpdate()
विधि का उपयोग करके प्रगति को अद्यतन करता हूं जहां मैं उद्देश्य के लिए NotificationManager
का उपयोग करता हूं। सब कुछ एक आकर्षण की तरह काम करता है, डाउनलोड के पूरा होने पर मैं विशिष्ट वीडियो फ़ाइल खोलने के लिए अधिसूचना पर क्लिक करना चाहता हूं। तो यह मैं क्या किया है:
mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
int icon = android.R.drawable.stat_sys_download_done;
long when = System.currentTimeMillis();
mNotification = new Notification(icon, "", when);
mContentTitle_complete = mContext.getString(R.string.download_complete);
notificationIntent = new Intent(mContext,OpenDownloadedVideo.class);
notificationIntent.putExtra("fileName", file);
mContentIntent = PendingIntent.getActivity(mContext, 0, notificationIntent, 0);
mNotification.setLatestEventInfo(mContext, file, mContentTitle_complete, mContentIntent);
mNotification.flags = Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(NOTIFICATION_ID, mNotification);
ध्यान दें कि fileName
और NOTIFICATION_ID
मेरे मामले में अद्वितीय हैं।
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
fileName = getIntent().getExtras().getString("fileName");
Intent i = new Intent(Intent.ACTION_VIEW);
File videoFileToPlay = new File(Environment.getExternalStorageDirectory()+"/MyFolder"+"/"+fileName);
i.setDataAndType(Uri.fromFile(videoFileToPlay), "video/*");
startActivity(i);
finish();
} catch(Exception e) {
//
}
}
तो जब मैं पहली बार के लिए एक वीडियो डाउनलोड करने और नोटिफिकेशन पर क्लिक उचित वीडियो फ़ाइल खोला जाएगा:
Activity
OpenDownloadedVideo.java
से फ़ाइल को खोलता है। हालांकि अगली बार जब मैं एक और वीडियो डाउनलोड करता हूं, और अधिसूचना पर क्लिक करता हूं तो डाउनलोड की गई पहली फ़ाइल फिर से खोली जाएगी।
ऐसा इसलिए है क्योंकि getIntent
OpenDownloadedVideo
के अंदर पहला Intent
बनाया गया है और नवीनतम नहीं है। यह कैसे सही हो सकता है?
इसके अलावा, कृपया ध्यान दें कि समस्या एक परिदृश्य मौजूद है जब मैं एक से अधिक वीडियो डाउनलोड करता हूं, उदा। अगर मैं पांच अलग-अलग वीडियो फाइल डाउनलोड करता हूं और स्टेटस बार में पांच अधिसूचनाएं हैं। प्रत्येक बार एक अधिसूचना क्लिक होने पर एक ही फाइल खोली जाएगी।
मैं कैसे है कि क्या करते हो ?? क्षमा करें मैं इस के लिए काफी नया हूँ। – Bopanna
मुझे नहीं पता कि यह मदद करेगा या नहीं। मैनिफेस्ट एडिटर में आप अपने गतिविधि लॉन्च मोड के लिए SINGLE_TOP जोड़ते हैं। फिर आप अपनी गतिविधि के ऑन न्यूइन्टेंट() को ओवरराइड करते हैं और उसी कोड को उसी पर डालते हैं जैसे आपके पास –
है, मैंने 'ओपनडाउनलोडेड वीडियो' गतिविधि 'SINGLE_TOP' बनाई है और गतिविधि के अंदर मैंने' ऑन न्यूइन्टेंट 'को ओवरराइड किया है जैसा आपने सुझाव दिया है .. .. लेकिन जब गतिविधि लॉन्च या पुन: लॉन्च की जाती है तो यह 'ऑन न्यूइन्टेंट' विधि के अंदर नहीं लगती है। – Bopanna