ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

应用未激活时未播放Android通知声音

2019-10-27 16:27:22  阅读:164  来源: 互联网

标签:lockscreen push-notification android


因此,我已经在网上搜索了,还没有人遇到我遇到的这个问题.

我正在构建需要推送通知的应用程序.推送通知显示在状态栏中和锁定屏幕上,但仅在应用程序处于活动状态时才会发出声音.我不知道我在想什么.

这是我的代码:

public class PushListenerService extends GcmListenerService {

    @Override
    public void onMessageReceived(String from, Bundle data) {
        Log.d("FROM", from);
        Bundle pushNotification = (Bundle) data.get("notification");
        String title = pushNotification.get("title").toString();
        String body = pushNotification.get("body").toString();
        Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        NotificationManager notificationManager = (NotificationManager) getBaseContext().getSystemService(Context.NOTIFICATION_SERVICE);
        Notification.Builder notification = new Notification.Builder(this);

        notification.setContentTitle(title)
                    .setContentText(body)
                    .setSmallIcon(R.drawable.portrait_front)
                    .setSound(alarmSound);

        notificationManager.notify(0, notification.build());
    }
}

任何帮助将不胜感激!

编辑:添加清单以供进一步检查:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sth.idapp.android.privateapp">

<application android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@mipmap/ic_launcher"
    android:supportsRtl="true"
    android:largeHeap="true"
    android:theme="@style/AppTheme">

    <activity
        android:screenOrientation="portrait"
        android:name=".start.StartActivity"
        android:theme="@style/AppTheme.HideActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <activity android:name=".main.MainActivity"
        android:screenOrientation="portrait"
        android:label="ID-APPEN"
        android:theme="@style/AppTheme.HideActionBar"/>

    <activity android:name=".styleguide.StyleguideActivity"
        android:screenOrientation="portrait"
        android:label="Styleguide"
        android:parentActivityName=".main.MainActivity" />

    <activity android:name=".profile.ProfileActivity"
        android:screenOrientation="portrait"
        android:label="@string/main_title"
        android:parentActivityName=".main.MainActivity" />

    <activity android:name=".lookups.list.FraudattempsListActivity"
        android:screenOrientation="portrait"
        android:label="@string/main_fraud_attempts"
        android:parentActivityName=".main.MainActivity" />

    <activity android:name=".lookups.details.FraudattemptsDetailsActivity"
        android:screenOrientation="portrait"
        android:label="@string/main_fraud_attempt"
        android:parentActivityName=".lookups.list.FraudattempsListActivity" />

    <activity android:name=".lookups.list.EntriesListActivity"
        android:screenOrientation="portrait"
        android:label="@string/main_entry"
        android:parentActivityName=".main.MainActivity" />


    <activity android:name=".profileguide.ProfileguideActivity"
        android:screenOrientation="portrait"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="Profil"
        android:theme="@style/AppTheme.HideActionBar" />

    <activity android:name=".qrcode.QRCodeActivity"
        android:screenOrientation="portrait"
        android:label="QR Code"
        android:parentActivityName=".main.MainActivity" />

    <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="sth.idapp.android.privateapp" />
        </intent-filter>
    </receiver>
    <service
        android:name=".gcm.PushListenerService"
        android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service
        android:name=".gcm.RegistrationIntentService"
        android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID"/>
            </intent-filter>
        </service>
    </application>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="sth.idapp.android.privateapp.permission.RECEIVE" />
    <uses-permission android:name="com.google.android.c2dm.permission.SEND" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
</manifest>

解决方法:

我解决了!

显然问题是我没有从上游发送带有数据有效负载的声音.

这是任何有相同问题的人的代码.

_gcmApi.SendMessage(request.Uri, 
                    request.ApiKey, 
                    new GCMMessage { 
                        to = registrationToken, 
                        notification = new notification { 
                            body = request.Message, 
                            title = "ID-appen", 
                            icon = "@drawable/portrait_front", 
                            sound = "default" 
                        } 
                     });

感谢您的所有帮助!

标签:lockscreen,push-notification,android
来源: https://codeday.me/bug/20191027/1945569.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有