2012-10-22 8 views
8

मेरे पास कुछ लाइनों के साथ एक साधारण अनुप्रयोग है क्योंकि मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरा वास्तविक एप्लिकेशन जीसीएमआरगेस्ट्रायर.चेकडिवाइस (यह) में क्यों दुर्घटनाग्रस्त हो जाता है (यदि मैं इसे हटा देता हूं तो मेरा एप्लिकेशन क्रैश नहीं होता है)। क्या कोई मदद कर सकता है? :( :जीसीएम: मेरा आवेदन क्यों जीसीएमआरगेस्ट्रायर.चेकडिवाइस (यह) में दुर्घटनाग्रस्त है;

public class DemoActivity extends Activity { 
private String TAG = "** pushAndroidActivity **"; 
private TextView mDisplay; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     GCMRegistrar.checkDevice(this); 
     GCMRegistrar.checkManifest(this); 
     setContentView(R.layout.main); 
     mDisplay = (TextView) findViewById(R.id.display); 
     mDisplay.setText("ciao"); 
} 

मैनिफ़ेस्ट:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.registrazionegcm" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> 
<permission android:name="com.example.registrazionegcm.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="com.example.registrazionegcm.permission.C2D_MESSAGE" /> 
<!-- App receives GCM messages. --> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<!-- GCM connects to Google Services. --> 
<uses-permission android:name="android.permission.INTERNET" /> 
<!-- GCM requires a Google account. --> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<!-- Keeps the processor from sleeping when a message is received. --> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".DemoActivity" 
     android:label="@string/title_activity_demo" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver 
     android:name="com.google.android.gcm.GCMBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <category android:name="com.example.registrazionegcm" /> 
     </intent-filter> 
    </receiver> 
    <service android:name=".GCMIntentService" /> 
</application> 

मेरे त्रुटियों:

10-22 21:54:21.075: E/AndroidRuntime(955): FATAL EXCEPTION: main 
10-22 21:54:21.075: E/AndroidRuntime(955): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.registrazionegcm/com.example.registrazionegcm.DemoActivity}: java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.os.Looper.loop(Looper.java:137) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.main(ActivityThread.java:4745) 
10-22 21:54:21.075: E/AndroidRuntime(955): at java.lang.reflect.Method.invokeNative(Native Method) 
10-22 21:54:21.075: E/AndroidRuntime(955): at java.lang.reflect.Method.invoke(Method.java:511) 
10-22 21:54:21.075: E/AndroidRuntime(955): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
10-22 21:54:21.075: E/AndroidRuntime(955): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
10-22 21:54:21.075: E/AndroidRuntime(955): at dalvik.system.NativeStart.main(Native Method) 
10-22 21:54:21.075: E/AndroidRuntime(955): Caused by: java.lang.UnsupportedOperationException: Device does not have package com.google.android.gsf 
10-22 21:54:21.075: E/AndroidRuntime(955): at com.google.android.gcm.GCMRegistrar.checkDevice(GCMRegistrar.java:98) 
10-22 21:54:21.075: E/AndroidRuntime(955): at com.example.registrazionegcm.DemoActivity.onCreate(DemoActivity.java:16) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.Activity.performCreate(Activity.java:5008) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
10-22 21:54:21.075: E/AndroidRuntime(955): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
10-22 21:54:21.075: E/AndroidRuntime(955): ... 11 more 
10-22 21:54:21.085: W/ActivityManager(167): Force finishing activity com.example.registrazionegcm/.DemoActivity 
10-22 21:54:21.095: W/WindowManager(167): Failure taking screenshot for (246x410) to layer 21010 
10-22 21:54:21.205: I/jdwp(265): Ignoring second debugger -- accepting and dropping 
10-22 21:54:21.395: I/Choreographer(167): Skipped 40 frames! The application may be doing too much work on its main thread. 
10-22 21:54:21.615: W/ActivityManager(167): Activity pause timeout for ActivityRecord{411d90d0 com.example.registrazionegcm/.DemoActivity} 
10-22 21:54:22.177: I/Choreographer(265): Skipped 120 frames! The application may be doing too much work on its main thread. 
10-22 21:54:32.339: W/ActivityManager(167): Activity destroy timeout for ActivityRecord{411d90d0 com.example.registrazionegcm/.DemoActivity} 

उत्तर

21

यह शायद, अपने कॉल एक युक्ति है कि GCM का समर्थन नहीं करता पर चल रहा है तो GCMRegistrar.checkDevice(this); एक अपवाद फेंक रहा है। सुनिश्चित करने के लिए अपने लॉगकट की जांच करें।

यदि आप इसे एक एमुलेटर पर परीक्षण कर रहे हैं, तो सुनिश्चित करें कि आपके पास Google एपीआई का उपयोग करने के लिए एमुलेटर स्थापित है। जब आप एमुलेटर बनाते हैं, तो नई एवीडी विंडो बनाएं "लक्ष्य" बॉक्स होता है। उस बॉक्स में कुछ चुनें जो "Google एपीआई" कहता है।

create emulator with google api

+1

मैंने त्रुटियों को जोड़ा है .. (मैं कैसे सुनिश्चित कर सकता हूं कि मेरे पास Google एपिस का उपयोग करने के लिए एमुलेटर सेट है?) –

+1

http://stackoverflow.com/questions/11339445/com-google-android-gsf-package -couldnt-be-found –

+0

मेरे उत्तर में जोड़ा गया। – Ralgha

0

Plz के बाद कदम

का पालन करें। अपने आवेदन

में "gcm.jar" libs में शामिल करें। एंड्रॉइड एसडीके प्रबंधक => अतिरिक्त => एंड्रॉइड लाइब्रेरी (अप्रचलित) के लिए Google क्लाउड मैसेजिंग स्थापित करें

। एंड्रॉयड एसडीके प्रबंधक => Android 4.3 (एपीआई 18) => स्थापित करें गूगल एपीआई

+0

क्या यह वास्तव में काम करने जा रहा है? मेरे पास नेक्सस एस में 2 विफलताएं हैं और नेक्सस में एक है 4. उन्होंने जीसीएम स्थापित नहीं किया था .. लेकिन मेरे पास इसका परीक्षण करने के लिए उन्हें नहीं है। क्या मुझे यह एमुलेटर में परीक्षण करना चाहिए? – aimiliano

+0

@aimiliano "उन्होंने जीसीएम स्थापित नहीं किया" आपका क्या मतलब है? –

+0

मेरा मतलब है कि मुझे यह त्रुटि मिली है इसके कारण: java.lang.UnsupportedOperationException: डिवाइस में com.google.android.gsf नेक्सस एस 4 में पैकेज नहीं है तो वे इन्हें कैसे प्राप्त नहीं कर सकते? – aimiliano

0

ग्रहण

1) में डाउनलोड gcm.jar

2) buildpath -> पुस्तकालयों - -> कॉन्फ़िगर पथ का निर्माण> बाहरी जार -> path_to_gcmjar

इस सबसे महत्वपूर्ण बात

3) gcm.jar कॉपी और परियोजना

की lib फ़ोल्डर में पेस्ट है
संबंधित मुद्दे