GMS在launcher的布局修改

Gms定制中經(jīng)常需要修改Gms app在launcher中的布局拳喻,通常有兩個方法

一 修改gms_overlay

首先根據(jù)Launcher3/res/xml/device_profiles.xml中的defaultLayoutId值確定修改那個布局笤妙,比如下面定義

    <grid-option
        launcher:name="5_by_5"
        launcher:numRows="5"
        launcher:numColumns="5"
        launcher:numFolderRows="4"
        launcher:numFolderColumns="4"
        launcher:numHotseatIcons="5"
        launcher:dbFile="launcher.db"
        launcher:defaultLayoutId="@xml/default_workspace_5x5" >

路徑:/vendor/google/overlay/gms_overlay/packages/apps/Launcher3/res/xml/default_workspace_5x5.xml(注意:mtk平臺的路徑為:vendor/google/overlay/gms_overlay/vendor/mediatek/proprietary/packages/apps/Launcher3/res/xml/default_workspace_5x5.xml)

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2013 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3">
  <appwidget packageName="com.handmark.expressweather" className="com.handmark.expressweather.widgets.Widget4x1_Clock" container="-100" screen="0" spanX="5" spanY="1" x="0" y="0" />
  <appwidget packageName="com.google.android.googlequicksearchbox" className="com.google.android.apps.gsa.staticplugins.searchwidget.GoogleSearchWidgetProvider" container="-100" screen="0" spanX="5" spanY="1" x="0" y="3" />
  <!-- Hotseat (We use the screen as the position of the item in the hotseat) -->
  <!-- Dialer Messaging [All Apps] Contacts Camera -->
  <favorite container="-101" screen="0" x="0" y="0" packageName="com.android.dialer" className="com.android.dialer.main.impl.MainActivity"/>
  <favorite container="-101" screen="1" x="1" y="0" packageName="com.google.android.apps.messaging" className="com.google.android.apps.messaging.ui.ConversationListActivity"/>
  <favorite container="-101" screen="2" x="2" y="0" packageName="com.android.chrome" className="com.google.android.apps.chrome.Main"/>
  <favorite container="-101" screen="3" x="3" y="0" packageName="com.smartphoton.camera" className="com.android.camera.CameraLauncher"/>
  <favorite container="-101" screen="4" x="4" y="0" packageName="com.google.android.apps.photos" className="com.google.android.apps.photos.home.HomeActivity"/>

  <!-- In Launcher3, workspaces extend infinitely to the right, incrementing from zero -->
  <favorite screen="0" x="0" y="4" packageName="com.tracfone.generic.mysites" className="com.tracfone.generic.mysites.MainActivity"/>
  <favorite screen="0" x="1" y="4" packageName="com.facebook.katana" className="com.facebook.katana.LoginActivity"/>
  <favorite screen="0" x="2" y="4" packageName="com.google.android.apps.tachyon" className="com.google.android.apps.tachyon.MainActivity"/>
  <favorite screen="0" x="3" y="4" packageName="com.android.vending" className="com.android.vending.AssetBrowserActivity"/>
  <folder folderItems="@xml/folder_google" container="-100" screen="0" x="4" y="4" />
  <favorite packageName="com.handmark.expressweather" className="com.handmark.expressweather.ui.activities.MainActivity" container="-100" screen="1" x="1" y="4" />
  <favorite packageName="com.android.settings" className="com.android.settings.Settings" container="-100" screen="1" x="3" y="4" />
  <folder folderItems="@xml/folder_media" container="-100" screen="2" x="1" y="4" />
  <folder folderItems="@xml/folder_productivity" container="-100" screen="2" x="2" y="4" />
  <folder folderItems="@xml/folder_tool" container="-100" screen="2" x="3" y="4" />
</favorites>

目錄列表


image.png

folder_google.xml

<?xml version="1.0" encoding="utf-8"?>
<folder title="@string/google_folder_name">
    <favorite packageName="com.google.android.googlequicksearchbox" className="com.google.android.googlequicksearchbox.SearchActivity" />
    <favorite packageName="com.android.chrome" className="com.google.android.apps.chrome.Main" />
    <favorite packageName="com.google.android.gm" className="com.google.android.gm.ConversationListActivityGmail" />
    <favorite packageName="com.google.android.apps.maps" className="com.google.android.maps.MapsActivity" />
    <favorite packageName="com.google.android.youtube" className="com.google.android.youtube.app.honeycomb.Shell$HomeActivity" />
    <favorite packageName="com.google.android.apps.docs" className="com.google.android.apps.docs.app.NewMainProxyActivity" />
    <favorite packageName="com.google.android.videos" className="com.google.android.youtube.videos.EntryPoint" />
    <favorite packageName="com.google.android.apps.photos" className="com.google.android.apps.photos.home.HomeActivity" />
    <favorite packageName="com.google.android.inputmethod.latin" className="com.google.android.apps.inputmethod.latin.preference.SettingsActivity" />
    <favorite packageName="com.google.android.calendar" className="com.android.calendar.AllInOneActivity" />
    <favorite packageName="com.google.android.apps.messaging" className="com.google.android.apps.messaging.ui.ConversationListActivity" />
</folder>

folder_media.xml

<?xml version="1.0" encoding="utf-8"?>
<folder title="@string/media_folder_name">
    <favorite packageName="com.google.android.apps.photos" className="com.google.android.apps.photos.home.HomeActivity" />
    <favorite packageName="com.google.android.videos" className="com.google.android.youtube.videos.EntryPoint" />
    <favorite packageName="com.android.fmradio" className="com.android.fmradio.FmMainActivity" />
    <favorite packageName="com.google.android.apps.youtube.music" className="com.google.android.apps.youtube.music.activities.MusicActivity" />
</folder>

folder_productivity.xml

<?xml version="1.0" encoding="utf-8"?>
<folder title="@string/productivity_folder_name">
    <favorite packageName="com.google.android.gm" className="com.google.android.gm.ConversationListActivityGmail" />
    <favorite packageName="com.google.android.calendar" className="com.android.calendar.AllInOneActivity" />
    <favorite packageName="com.google.android.contacts" className="com.android.contacts.activities.PeopleActivity" />
    <favorite packageName="com.google.android.apps.nbu.files" className="com.google.android.apps.nbu.files.home.HomeActivity" />
</folder>

folder_tool.xml

<?xml version="1.0" encoding="utf-8"?>
<folder title="@string/tool_folder_name">
    <favorite packageName="com.handmark.expressweather" className="com.handmark.expressweather.ui.activities.MainActivity" />
    <favorite packageName="com.android.settings" className="com.android.settings.Settings" />
    <favorite packageName="com.google.android.deskclock" className="com.android.deskclock.DeskClock" />
    <favorite packageName="com.google.android.calculator" className="com.android.calculator2.Calculator" />
    <favorite packageName="com.celltick.lockscreen" className="com.celltick.lockscreen.LockerActivity2" />
    <favorite packageName="com.tracfone.preload.accountservices" className="com.tracfone.preload.accountservices.MainActivity" />
    <favorite packageName="com.google.android.apps.photos" className="com.google.android.apps.photos.home.HomeActivity" />
</folder>

效果圖如下


image.png

image.png

二 GmsSampleIntegration中修改

GmsSampleIntegration中默認(rèn)已經(jīng)支持了setupwizard和launcher3的客戶定制修改
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2017 Google Inc. All Rights Reserved. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gmsintegration">
    <application android:label="@string/app_label">
        <!-- This isn't a real receiver, it's only used as a marker interface. -->
        <receiver android:name=".LauncherCustomizationReceiver">
            <intent-filter>
                <action android:name="com.android.launcher3.action.PARTNER_CUSTOMIZATION" />
            </intent-filter>
        </receiver>

        <receiver android:name=".SuwCustomizationReceiver">
            <intent-filter>
                <action android:name="com.android.setupwizard.action.PARTNER_CUSTOMIZATION" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

LauncherCustomizationReceiver.java

/* Copyright (C) 2017 Google Inc. All Rights Reserved. */

package com.google.android.gmsintegration;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class LauncherCustomizationReceiver extends BroadcastReceiver {

    public LauncherCustomizationReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
    }
}

通過注冊com.android.launcher3.action.PARTNER_CUSTOMIZATION的廣播監(jiān)聽,launcher定制生效,需要注意的是gmsintegration如果打包到項目中重虑,gms-overlay會失效,優(yōu)先使用gmsintegration的配置通铲。不過要注意GmsSampleIntegration中的android.mk渣玲,因為GmsSampleIntegration下的res配置有幾個,看下你需要編譯哪個夺克。
修改前的android.mk

###############################################################################
# Various GMS Sample Integration targets
LOCAL_PATH:= $(my-dir)

# GmsSampleIntegration
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsSampleIntegration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_full $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsSampleIntegrationGo
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsSampleIntegrationGo
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_go $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsSampleIntegrationGo_2GB
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsSampleIntegrationGo_2GB
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_go_2gb $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsSampleIntegrationGo512M
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsSampleIntegrationGo512M
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_go_512m $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType2Integration (No GSA, Chrome)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType2Integration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_no_gsa $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType2IntegrationGo (No GSA, Chrome)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType2IntegrationGo
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_no_search_go $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType3aIntegration (GSA, No Chrome, no placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType3aIntegration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_min $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType3aIntegrationGo (GSA, No Chrome, no placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType3aIntegrationGo
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_min_go $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType3bIntegration (GSA, No Chrome, search placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType3bIntegration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_no_chrome $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType3bIntegrationGo (GSA, No Chrome, search placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType3bIntegrationGo
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_no_chrome_go $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType4aIntegration (GSA, Chrome, no placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType4aIntegration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_min $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType4aIntegrationGo (GSA, Chrome, no placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType4aIntegrationGo
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_min_go $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType4bIntegration (GSA, Chrome, search placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType4bIntegration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_no_chrome $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType4bIntegrationGo (GSA, Chrome, search placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType4bIntegrationGo
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_no_chrome_go $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType4cIntegration (GSA, Chrome, search+chrome placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType4cIntegration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_full $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType4cIntegrationGo (GSA, Chrome, search+chrome placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType4cIntegrationGo
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_go $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType4cIntegrationGo_2GB (GSA, Chrome, search+chrome placement)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType4cIntegrationGo_2GB
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_go_2gb $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

# GmsEEAType1Integration (No GSA, No Chrome)
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsEEAType1Integration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_min $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

修改后的android.mk.我們項目中選第一個

###############################################################################
# Various GMS Sample Integration targets
LOCAL_PATH:= $(my-dir)

# GmsSampleIntegration
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := GmsSampleIntegration
LOCAL_MODULE_OWNER := google
LOCAL_MODULE_TAGS := optional
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res_dhs_full $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)

關(guān)于launcher的默認(rèn)布局加載流程可以參考下面這個文章:
https://blog.csdn.net/csdn_conda/article/details/79728651

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末箕宙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子懊直,更是在濱河造成了極大的恐慌扒吁,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件室囊,死亡現(xiàn)場離奇詭異,居然都是意外死亡魁索,警方通過查閱死者的電腦和手機融撞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粗蔚,“玉大人尝偎,你說我怎么就攤上這事。” “怎么了致扯?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵肤寝,是天一觀的道長。 經(jīng)常有香客問我抖僵,道長鲤看,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任耍群,我火速辦了婚禮义桂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蹈垢。我一直安慰自己慷吊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布曹抬。 她就那樣靜靜地躺著溉瓶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谤民。 梳的紋絲不亂的頭發(fā)上嚷闭,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音赖临,去河邊找鬼胞锰。 笑死,一個胖子當(dāng)著我的面吹牛兢榨,可吹牛的內(nèi)容都是我干的嗅榕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼吵聪,長吁一口氣:“原來是場噩夢啊……” “哼凌那!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吟逝,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤帽蝶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后块攒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體励稳,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年囱井,在試婚紗的時候發(fā)現(xiàn)自己被綠了驹尼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡庞呕,死狀恐怖新翎,靈堂內(nèi)的尸體忽然破棺而出程帕,到底是詐尸還是另有隱情,我是刑警寧澤地啰,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布愁拭,位于F島的核電站,受9級特大地震影響亏吝,放射性物質(zhì)發(fā)生泄漏岭埠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一顺呕、第九天 我趴在偏房一處隱蔽的房頂上張望枫攀。 院中可真熱鬧,春花似錦株茶、人聲如沸来涨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹦掐。三九已至,卻和暖如春僵闯,著一層夾襖步出監(jiān)牢的瞬間卧抗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工鳖粟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留社裆,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓向图,卻偏偏與公主長得像泳秀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子榄攀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容