适配 Android 8.0 的 Receiver 限制

This commit is contained in:
chenjuntao
2018-10-29 09:59:20 +08:00
parent 16fc9c0b09
commit b636bed83b
2 changed files with 48 additions and 0 deletions

View File

@ -16,6 +16,8 @@ class UmengMessageReceiver : BroadcastReceiver() {
const val TYPE_REMOVE = "remove"
const val TYPE_CLICK = "click"
const val DIRECT_ONLY = "direct_only" // 只跳转,不记录
const val ACTION = "com.gh.gamecenter.UMENG"
}
override fun onReceive(context: Context, intent: Intent) {

View File

@ -15,10 +15,17 @@ import com.gh.base.GHActivityLifecycleCallbacksImpl;
import com.gh.common.LocalBroadcastReceiver;
import com.gh.common.PushManager;
import com.gh.common.exposure.ExposureManager;
import com.gh.common.im.ImReceiver;
import com.gh.common.util.DataUtils;
import com.gh.download.DownloadNotification;
import com.gh.gamecenter.Injection;
import com.gh.gamecenter.receiver.ActivitySkipReceiver;
import com.gh.gamecenter.receiver.DownloadReceiver;
import com.gh.gamecenter.receiver.InstallAndUninstallReceiver;
import com.gh.gamecenter.receiver.InstallReceiver;
import com.gh.gamecenter.receiver.MeizuPushReceiver;
import com.gh.gamecenter.receiver.NetworkStateReceiver;
import com.gh.gamecenter.receiver.UmengMessageReceiver;
import com.gh.gid.GidHelper;
import com.leon.channel.helper.ChannelReaderUtil;
import com.m7.imkfsdk.chat.ChatActivity;
@ -108,6 +115,7 @@ public class HaloApp extends TinkerAppLike {
GidHelper.getInstance().init(getApplication());
initReceiver();
initLocalBroadcast();
initConnectivityChangesReceiver();
@ -127,6 +135,44 @@ public class HaloApp extends TinkerAppLike {
}
}
// 3.5 开始将 targetSdk 升级至 26原来写在 Manifest 的部分 receiver 由于系统限制需要换成在运行时注册
private void initReceiver() {
DownloadReceiver downloadReceiver = new DownloadReceiver();
IntentFilter downloadFilter = new IntentFilter();
downloadFilter.addAction(DownloadNotification.ACTION_DOWNLOAD);
getApplication().registerReceiver(downloadReceiver, downloadFilter);
InstallReceiver installReceiver = new InstallReceiver();
IntentFilter installFilter = new IntentFilter();
installFilter.addAction(DownloadNotification.ACTION_INSTALL);
getApplication().registerReceiver(installReceiver, installFilter);
ActivitySkipReceiver skipReceiver = new ActivitySkipReceiver();
IntentFilter skipFilter = new IntentFilter();
skipFilter.addAction(ActivitySkipReceiver.ACTION_ACTIVITY_SKIP);
getApplication().registerReceiver(skipReceiver, skipFilter);
UmengMessageReceiver umengMessageReceiver = new UmengMessageReceiver();
IntentFilter umengFilter = new IntentFilter();
umengFilter.addAction(UmengMessageReceiver.ACTION);
getApplication().registerReceiver(umengMessageReceiver, umengFilter);
ImReceiver imReceiver = new ImReceiver();
IntentFilter imFilter = new IntentFilter();
imFilter.addAction(ImReceiver.UNIQUE_BROADCAST_ACTION);
imFilter.addAction("action_finish");
getApplication().registerReceiver(imReceiver, imFilter);
MeizuPushReceiver pushReceiver = new MeizuPushReceiver();
IntentFilter pushFilter = new IntentFilter();
pushFilter.addAction("com.meizu.flyme.push.intent.MESSAGE");
pushFilter.addAction("com.meizu.flyme.push.intent.REGISTER.FEEDBACK");
pushFilter.addAction("com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK");
pushFilter.addAction("com.meizu.c2dm.intent.REGISTRATION");
pushFilter.addAction("com.meizu.c2dm.intent.RECEIVE");
getApplication().registerReceiver(pushReceiver, pushFilter);
}
private void initPackageChangesReceiver() {
InstallAndUninstallReceiver receiver = new InstallAndUninstallReceiver();
IntentFilter intentFilter = new IntentFilter();