3

您好我想显示一个推送通知的弹出窗口并将消息数据保存到本地数据库中。我已经集成了 Pushwoosh jar。我的代码是

onCreate : if(!prefrences.getString("push", "").equalsIgnoreCase(""))
                {
                    Log.w("already registered", "already registered");
                    Log.e("Token", prefrences.getString("push", ""));
                }
            else
                { 
                //*** Registers For Push Woosh Notifications*//*
                    PushGCMIntentService p=new PushGCMIntentService();
                    PushManager push=new PushManager(this, APP_ID, SENDER_ID);
                    push.onStartup(this);
                    checkMessage(getIntent());
                }
@Override
protected void onNewIntent(Intent intent)
    {
        super.onNewIntent(intent);
        Log.e("ON NEW INTENT", "called");
        setIntent(intent);
        checkMessage(intent);
        setIntent(new Intent());
    }
private void checkMessage(Intent intent) 
    {

        if (null != intent)
            {
                if (intent.hasExtra(PushManager.PUSH_RECEIVE_EVENT))
                    {

                        Log.e("push message is " ,  intent.getExtras().getString(PushManager.PUSH_RECEIVE_EVENT));

                    }
                else if (intent.hasExtra(PushManager.REGISTER_EVENT))
                    {
                        Log.e("register",""+PushManager.REGISTER_EVENT);

                        //Toast.makeText(getApplicationContext(), ""+intent.getExtras().getString(PushManager.REGISTER_EVENT), Toast.LENGTH_SHORT).show();
                         s=intent.getExtras().getString(PushManager.REGISTER_EVENT);
                        Log.e("push message" ,  intent.getExtras().getString(PushManager.REGISTER_EVENT));
                        SharedPreferences pref =getSharedPreferences("Push",MODE_PRIVATE);
                        Editor edit=pref.edit();
                        edit.putString("push", s);
                        edit.commit();
                        Log.e("push token - - - >" , pref.getString("push", "Novalue"));


                    }
                else if (intent.hasExtra(PushManager.UNREGISTER_EVENT))
                    {
                        Log.e("unregister","-------");

                    }
                else if (intent.hasExtra(PushManager.REGISTER_ERROR_EVENT))
                    {
                        Log.e("register error","----------");
                    }
                else if (intent.hasExtra(PushManager.UNREGISTER_ERROR_EVENT))
                    {
                        Log.e("unregister error","-----------");
                        //  Toast.makeText(getApplicationContext(), "DFGDHDSHshsh", Toast.LENGTH_LONG).show();
                    }
                resetIntentValues();
            }


    private void resetIntentValues()
{
    Intent mainAppIntent = getIntent();

    if (mainAppIntent.hasExtra(PushManager.PUSH_RECEIVE_EVENT))
    {
        mainAppIntent.putExtra(PushManager.PUSH_RECEIVE_EVENT, (String) null);
    }
    else if (mainAppIntent.hasExtra(PushManager.REGISTER_EVENT))
    {
        mainAppIntent.putExtra(PushManager.REGISTER_EVENT, (String) null);
    }
    else if (mainAppIntent.hasExtra(PushManager.UNREGISTER_EVENT))
    {
        mainAppIntent.putExtra(PushManager.UNREGISTER_EVENT, (String) null);
    }
    else if (mainAppIntent.hasExtra(PushManager.REGISTER_ERROR_EVENT))
    {
        mainAppIntent.putExtra(PushManager.REGISTER_ERROR_EVENT, (String) null);
    }
    else if (mainAppIntent.hasExtra(PushManager.UNREGISTER_ERROR_EVENT))
    {
        mainAppIntent.putExtra(PushManager.UNREGISTER_ERROR_EVENT, (String) null);
    }

    setIntent(mainAppIntent);
}

Asa 我收到一条消息,然后必须触发“(intent.hasExtra(PushManager.PUSH_RECEIVE_EVENT))”,这样我才能弹出消息,但直到我单击通知栏中的通知才会发生。此外,如果一条消息包含一个 url,那么即使我单击通知栏中的通知,它也不会被触发。我的清单文件如下:

    <activity android:name=".SplashScreen"
            android:launchMode="singleTop"
            android:noHistory="true"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustPan|adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="My_APP_PACAKGE_NAME.MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
            </intent-filter></activity>
<activity android:name="com.arellomobile.android.push.PushWebview" />
<activity android:name="com.arellomobile.android.push.MessageActivity" />
<activity android:name="com.arellomobile.android.push.PushHandlerActivity" />
<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=" My_APP_PACAKGE_NAME " />
            </intent-filter>
        </receiver>
<service android:name="com.arellomobile.android.push.PushGCMIntentService" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
<permission
        android:name=" My_APP_PACAKGE_NAME.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
<uses-permission android:name=" My_APP_PACAKGE_NAME.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

请帮忙。提前谢谢。

4

0 回答 0