5

मेरे पास कोड है, और यह सिर्फ काम नहीं करता है, इसलिए मैं किसी से भी मेरी मदद करने के लिए कहता हूं। इस विशिष्ट मामले पर बहुत कम जानकारी है।एंड्रॉइड अधिसूचना के निर्माण को अनदेखा क्यों कर रहा है?

MainActivity


public class MainActivity extends Activity { 
public final int PENDING_INTENT_ID = 8; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button clickity = (Button)findViewById(R.id.alarm_button); 
    clickity.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Calendar now = Calendar.getInstance(); 
      now.add(Calendar.SECOND, 20); 

      //Create a new PendingIntent used by the Alarm when it activates 
      Intent intent = new Intent(v.getContext(), AlarmReciever.class); 
      intent.setAction("SOME_AWESOME_TRIGGER_WORD"); 
      intent.putExtra("info", "This String shows that the info is actually sent correctly"); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(v.getContext(), PENDING_INTENT_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT|Intent.FILL_IN_DATA); 

      //Then Create the alarm manager to send this pending intent and set the date to go off 
      AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE); 
      am.set(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntent); 

     } 
    }); 

} 

AlarmReciever (वाकिफ मैं गलत इसकी वर्तनी लेकिन thats के बाद से यह कैसे है, im इसके साथ जा रहा)


public class AlarmReciever extends BroadcastReceiver{ 

@Override 
public void onReceive(Context c, Intent arg1) { 

    //get a reference to NotificationManager 
    String ns = Context.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) c.getSystemService(ns); 

    //Instantiate the notification 

    CharSequence tickerText = "Hello"; 
    long when = System.currentTimeMillis(); 
    Notification.Builder builder = new Notification.Builder(c) 
           .setTicker(tickerText) 
           .setWhen(when) 
           .setContentTitle(arg1.getStringExtra("info")) 
           .setContentText("Success!!") 
           .setAutoCancel(true); 
    Notification notification = builder.getNotification(); 
    mNotificationManager.notify(0, notification);//note the first argument, the ID should be unique 



} 
} 

प्रकट


<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver 
     android:name="com.testproject.AlarmReciever" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
    </receiver> 

</application> 


कि सब कुछ किया जाना चाहिए। मैं इसे चलाने की कोशिश कर रहा हूं और यह मुझे कुछ भी नहीं दिखा रहा है। मैं इसे एक एमुलेटर पर चला रहा हूं जो वास्तव में मायने रखता है।

संपादित करें: जब मैं कहता हूं कि यह काम नहीं करता है, तो मेरा मतलब है कि कुछ भी पॉप अप नहीं होता है। यह ठीक चलता है, लेकिन अधिसूचना कभी नहीं खुलती है।

मुद्दा: enter image description here

तो मुद्दा एंड्रॉयड सिर्फ अपनी अधिसूचना अनदेखी तक ही सीमित है। समस्या यह है कि यह मुझे नहीं बताती है-_- इसलिए मैं इसे ठीक नहीं कर सकता। इस मामले पर किसी भी विशेषज्ञ को अधिसूचना कॉल करने के लिए मेरे कोड के साथ कुछ गलत लगता है? क्या इससे कोई फर्क पड़ता है कि यह एक एमुलेटर पर है?

उत्तर

2
Intent intent = new Intent(v.getContext(), AlarmReciever.class); 
// intent.setAction("SOME_AWESOME_TRIGGER_WORD"); replace to: 
intent.setAction("com.testproject.SOME_AWESOME_TRIGGER_WORD"); 

कम से कम पहले देखो के लिए

युपीडी यह है:

long firstTime = SystemClock.elapsedRealtime(); 

AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, /* INTERVAL IN MS */ 20 * 1000, /* PendingIntent */ intent); 
+0

तो मुझे लगता है कि दूर ले, मैं अपने मैनिफ़ेस्ट फ़ाइल के '' टैग बदलना चाहिए? – Andy

+0

आप वास्तव में कोड से 'intent.setAction (..)' को हटा सकते हैं + एंड्रॉइड मेनिफेस्ट से '' अनुभाग को हटा दें। –

+0

मैंने अभी किया। अभी भी काम नहीं करता है। हालांकि इसे इंगित करने के लिए धन्यवाद। यह एक शुरुआत है। – Andy

8

खैर, सबक पर सूचनाएं सीखा है। कारण मुझे त्रुटि मिल रही थी क्योंकि एक आईएमजी जोड़ा जाना चाहिए, यदि नहीं, तो यह नहीं दिखाएगा! व्लादिमीर जो कृपापूर्वक इंगित करने में सक्षम था, उसके अपवाद के साथ मैं जो कुछ भी था, वह मूल रूप से सही था। इसे यहां पोस्ट करने से दूसरों को एक ही समस्या मिल रही है जो अधिसूचनाओं का परीक्षण कर रही है।

22

मैं एक ही मुद्दे में भाग गया। यदि आप "नई अधिसूचना()" बनाते समय आइकन निर्दिष्ट नहीं करते हैं, तो अधिसूचना दिखाई नहीं देगी।

+1

हाहा, हाँ। मैं चाहता हूं कि दस्तावेज़ों का उल्लेख है। लेकिन हे, परीक्षण और त्रुटि सही है। अब अन्य लोगों को पता है :) – Andy

0

ऐसा इसलिए है क्योंकि, आप अधिसूचना आइकन सेट नहीं कर रहे हैं। यदि आप notificaiton आइकन सेट करते हैं तो इसे काम करना चाहिए। लॉग स्वयं ही कहता है कि आप छवि के बिना अधिसूचना नहीं भेज सकते हैं।

0

लगता है आप की तरह चिह्न सेट करने के लिए भूल गया .. आप की जरूरत कम से कम एक डिफ़ॉल्ट आइकन ..

स्थापित करने के लिए इस प्रयास करें ..

Notification.Builder builder = new Notification.Builder(c) 
         .setTicker(tickerText) 
         .setWhen(when) 
         .setContentTitle(arg1.getStringExtra("info")) 
         .setContentText("Success!!") 
         .setAutoCancel(true) 
         .setSmallIcon(R.drawable.ic_launcher); //<--- this one