मेरे पास एक कामकाजी सी 2 डीएम एप्लीकेशन था। नया सी 2 डीएम एप्लिकेशन बनाते समय मैंने उसी पैकेज नाम का पुन: उपयोग किया।सी 2 डीएम ब्रॉडकास्ट रिसीवर
यह अब काम करता है जब ब्रॉडकास्ट रिसीवर को एप्लिकेशन नहीं चलने पर कॉल नहीं किया जाता है। यह कहना है कि अगर मैं एप्लिकेशन चलाता हूं और इसे सी 2 डीएम संदेश भेजता हूं तो यह सब काम करता है। लेकिन एक बल के बाद ब्रॉडकास्ट रिसीवर को अब नहीं बुलाया जाता है।
मैंने कई उदाहरण देखे हैं और मेरे पुराने मैनिफेस्ट में सब कुछ की तुलना नए से की है। श्रेणियों, इराद सेवाओं, आदि में उपयोग किए गए पैकेज नामों पर अतिरिक्त ध्यान देना ..
प्रश्न: क्या कोई सामान्य सी 2 डीएम कोडिंग/कॉन्फ़िगर गलती है जिसके परिणामस्वरूप ब्रॉडकास्ट रिसीवर को ऐप के बाद बुलाया जा रहा है?
01-11 00: 54: 43.580:
मैं बल के बाद अपने आवेदन की छोड़ने जब मैं एक C2DM संदेश भेजने के इस लॉग बिल्ली मिलता है चेतावनी/GTalkService (286): [DataMsgMgr] प्रसारण आशय कॉलबैक: परिणाम = CentLED forIntent {act = com.google.android.c2dm.intent.RECEIVE cat = [com.aawwpcd.pcd3] (अतिरिक्त है)}
मुझे डिवाइस पर भेजे गए प्रत्येक C2DM संदेश के लिए उनमें से एक मिलता है आवेदन छोड़ने के बल के बाद।
ऐसा लगता है कि इरादा आ रहा है लेकिन मेरे ब्रॉडकास्ट रिसीवर को पास नहीं किया जा रहा है।
संपादित करें:
यहाँ प्रकट और BroadcastReceiver से प्रासंगिक बिट्स हैं:
BroadcastReciever
package com.aawwpcd.pcd3.c2dm;
import ...
public class C2DMBroadcastReceiver extends BroadcastReceiver {
@Override
public IBinder peekService(Context myContext, Intent service) {
return super.peekService(myContext, service);
}
public C2DMBroadcastReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
...
}
}
प्रकट
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.aawwpcd.pcd3"
android:versionCode="250"
android:versionName="ICSPCD3">
<uses-sdk android:minSdkVersion="13"
android:targetSdkVersion="14"/>
<permission android:name="com.aawwpcd.pcd3.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.aawwpcd.pcd3.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application android:name=".PCD3Application"
android:label="@string/app_name"
android:icon="@drawable/pcdlauncher"
android:theme="@android:style/Theme.Holo">
<activity android:name=".honeycombpcd3.FullScheduleActivity"
android:label="@string/app_namefull"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Only C2DM servers can send messages for the app. If permission is not
set - any other app can generate it -->
<receiver android:name=".c2dm.C2DMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<!-- Receive the actual message -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.aawwpcd.pcd3"/>
</intent-filter>
<!-- Receive the registration id -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="com.aawwpcd.pcd3"/>
</intent-filter>
</receiver>
</application>
</manifest>
संपादित करें: क्या यह 3.x में कुछ नया हो सकता है? जैसा कि ऊपर बताया गया है, इस समस्या के साथ मेरी समस्याएं शुरू हुईं - 3.x के लिए लिखी गईं। मैं चाहता हूं कि सी 2 डीएम ब्रॉडकास्ट रिसीवर को कॉल करने के लिए भी है जब भी एप्लिकेशन नहीं चल रहा हो। मैं उसे नहीं देख रहा हूँ। क्या यह 3.x परिवर्तन हो सकता है? यह 2.3.x फोन से पहले इस तरह से काम करता था और मुझे कुछ भी नहीं मिल रहा है जो मैं अलग कर रहा हूं। यह साबित करने के लिए टेस्ट कोड लिखना परेशानी होगी लेकिन यह मुझे लगता है।
संपादित करें: फोर्स क्विट से संबंधित लगता है। जब मैं .apk को पुन: स्थापित करता हूं और तब डिवाइस को c2dm संदेश भेजता हूं तो मुझे कोई समस्या नहीं है; ब्रॉडकास्ट रिसीवर इसे उठाता है। इस मामले में जब तक सी 2 डीएम आया था तब तक एप्लिकेशन पहले से नहीं चल रहा था। एकमात्र समस्या यह है कि मैं आवेदन छोड़ने के बाद मजबूर हूं। इसके बाद सी 2 डीएम संदेश ब्रॉडकास्ट रिसीवर द्वारा नहीं उठाए जाते हैं।
अपने मेनिफेयर के '<रिसीवर ... />' टैग और अपने रिसीवर क्लास के पैकेज – Jin35
समान समस्या प्रदान करें और मैंने इसे ठीक करने के लिए चीजों का एक गुच्छा करने की कोशिश की है। आपको यह ध्यान देने की सराहना करें कि यह केवल बल के करीब –