Permissions4m的使用

permissions4m阿弃,是國(guó)產(chǎn) Android 權(quán)限申請(qǐng)最佳適配方案遭赂。解決了在小米手機(jī)上進(jìn)行權(quán)限申請(qǐng)時(shí),所遇到的一些坑贤斜,也增強(qiáng)了魅族手機(jī)中的權(quán)限申請(qǐng)。
下面我們直接看其使用:
申請(qǐng)權(quán)限

        Permissions4M.get(this)
                     .requestForce(true)//是否強(qiáng)制彈出權(quán)限申請(qǐng)對(duì)話框
                     .requestPageType(Permissions4M.PageType.MANAGER_PAGE)//返回的 intent 是跳轉(zhuǎn)至**系統(tǒng)設(shè)置頁(yè)面**
                     .requestPermissions(Manifest.permission.ACCESS_COARSE_LOCATION)//申請(qǐng)的權(quán)限
                     .requestCodes(LOCATION_CODE)//申請(qǐng)的code(自定義)
                     .request();

權(quán)限申請(qǐng)成功后回調(diào)

/**
     * 授權(quán)成功是回調(diào)
     * @param code
     */
    @PermissionsGranted({LOCATION_CODE})
    public void granted(int code){
        switch (code){
            case LOCATION_CODE:
                ToastUtils.showShort("定位權(quán)限申請(qǐng)成功");
                break;
            default:
                break;
        }
    }

權(quán)限申請(qǐng)失敗后回調(diào)

/**
     * 授權(quán)失敗時(shí)回調(diào)
     * @param code
     */
    @PermissionsDenied({LOCATION_CODE})
    public void denied(int code){
        switch (code){
            case LOCATION_CODE:
                ToastUtils.showShort("定位權(quán)限申請(qǐng)失敗");
                break;
            default:
                break;
        }
    }

權(quán)限申請(qǐng)逛裤,二次授權(quán)時(shí)回調(diào)
如果用戶不需要自己彈出提示對(duì)話框的話瘩绒,使用@PermissionsRationale,具體代碼如下:

/**
     * 二次授權(quán)時(shí)回調(diào)
     * @param code
     * 不需要自己彈出對(duì)話框的話带族,使用 PermissionsRationale
     */
    @PermissionsRationale({LOCATION_CODE})
    public void rationale(int code){
        switch (code){
            case LOCATION_CODE:
                ToastUtils.showShort("需要定位權(quán)限锁荔,應(yīng)用才能正常使用...");
                break;
            default:
                break;
        }
    }

如果用戶需要自己彈出提示對(duì)話框的話,使用@PermissionsCustomRationale蝙砌,具體代碼如下:

/**
     * 二次授權(quán)時(shí)回調(diào)
     * @param code
     * 需要自己彈出對(duì)話框的話阳堕,使用 PermissionsCustomRationale
     */
    @PermissionsCustomRationale({LOCATION_CODE})
    public void locationRationale(int code){
        switch (code){
            case LOCATION_CODE:
                new AlertDialog.Builder(PermissionActivity.this)
                        .setMessage("親愛(ài)的用戶,我們需要開(kāi)啟您的定位權(quán)限.")
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtils.showShort("前往設(shè)置界面");
                                Permissions4M.get(PermissionActivity.this)
                                        .requestOnRationale()
                                        .requestPermissions(Manifest.permission.ACCESS_COARSE_LOCATION)
                                        .requestCodes(LOCATION_CODE)
                                        .request();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .show();
                break;
            default:
                break;
        }
    }

如果用戶拒絕權(quán)限申請(qǐng)且選擇了不在提示時(shí)择克,使用@PermissionsNonRationale;具體代碼如下:

/**
     * 二次授權(quán)時(shí)回調(diào)
     * @param code
     * 拒絕權(quán)限且不再提示時(shí),使用下面 PermissionsNonRationale
     */
    @PermissionsNonRationale({LOCATION_CODE})
    public void nonRationale(int code, final Intent intent){
        switch (code){
            case LOCATION_CODE:
                new AlertDialog.Builder(PermissionActivity.this)
                        .setMessage("親愛(ài)的用戶恬总,我們需要開(kāi)啟您的定位權(quán)限.")
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtils.showShort("前往設(shè)置界面");
                                startActivity(intent);//此處的Intent 類型為兩種,一種是跳轉(zhuǎn)至系統(tǒng)設(shè)置頁(yè)面肚邢,另一種是跳至手機(jī)管家頁(yè)面壹堰,而具體的設(shè)置方法請(qǐng)參考 注解回調(diào) 中 .requestPageType(int) 設(shè)置方法。
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .show();
                break;
            default:
                break;
        }
    }

當(dāng)用戶拒絕權(quán)限且選擇不在提示時(shí)骡湖,會(huì)調(diào)用此權(quán)限申請(qǐng)回調(diào)方法

/**
     * 在 Activity 或 Fragment 中贱纠,需要手動(dòng)添加 onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)方法以支持權(quán)限申請(qǐng)回調(diào)
     * 拒絕權(quán)限且選擇不在提示時(shí),會(huì)調(diào)用此權(quán)限申請(qǐng)回調(diào)方法
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        Permissions4M.onRequestPermissionsResult(PermissionActivity.this, requestCode, grantResults);
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
補(bǔ)充:一次性申請(qǐng)多種權(quán)限
@PermissionsRequestSync(permission = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, value = {REQUEST_CAMERA, REQUEST_WRITE_STORAGE})

public class MainActivity extends AppCompatActivity {
    private final String TAG = MainActivity.class.getSimpleName();
    public static final int REQUEST_CAMERA = 0x1000;
    public static final int REQUEST_WRITE_STORAGE = 0x1001;

可以看到一次性申請(qǐng)多種權(quán)限是使用@PermissionsRequestSync勺鸦,并且是寫(xiě)在類之外的并巍;而且定義的code是公共的靜態(tài)常量目木。這樣要申請(qǐng)的權(quán)限和需要的code就定義完成了换途,下面看代碼中的使用。

        Permissions4M.get(this)
                .requestForce(true)//是否強(qiáng)制彈出權(quán)限申請(qǐng)對(duì)話框
                .requestSync();

對(duì)于申請(qǐng)成功和失敗的處理和前面的差不多刽射,看代碼:

    @PermissionsGranted({REQUEST_CAMERA, REQUEST_WRITE_STORAGE})
    public void granted(int code) {
        switch (code) {
            case REQUEST_CAMERA:
                Log.e(TAG, "照相機(jī)權(quán)限申請(qǐng)成功...");
                break;
            case REQUEST_WRITE_STORAGE:
                Log.e(TAG, "寫(xiě)存儲(chǔ)權(quán)限申請(qǐng)成功...");
                break;
            default:
                break;
        }
    }

    @PermissionsDenied({REQUEST_CAMERA, REQUEST_WRITE_STORAGE})
    public void denied(int code) {
        switch (code) {
            case REQUEST_CAMERA:
                Log.e(TAG, "照相機(jī)權(quán)限申請(qǐng)失敗...");
                break;
            case REQUEST_WRITE_STORAGE:
                Log.e(TAG, "寫(xiě)存儲(chǔ)權(quán)限申請(qǐng)失敗...");
                break;
            default:
                break;
        }
    }

一次性多種權(quán)限申請(qǐng)军拟,也可以用下面的這個(gè)方法完成:

        Permissions4M.get(this)
                .requestForce(true)
                .requestPermissions(Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE)
                .requestCodes(100, 101, 102)
                .requestListener(new ListenerWrapper.PermissionRequestListener() {
                    @Override
                    public void permissionGranted(int i) {
                        switch (i){
                            case 100:
                                Log.e("LHC", "照相機(jī)權(quán)限申請(qǐng)成功.");
                                break;
                            case 101:
                                Log.e("LHC", "手機(jī)信息權(quán)限申請(qǐng)成功.");
                                break;
                            case 102:
                                Log.e("LHC", "讀權(quán)限申請(qǐng)成功.");
                                break;
                            default:
                                break;
                        }
                    }

                    @Override
                    public void permissionDenied(int i) {
                        switch (i){
                            case 100:
                                Log.e("LHC", "照相機(jī)權(quán)限申請(qǐng)失敗..");
                                break;
                            case 101:
                                Log.e("LHC", "手機(jī)信息權(quán)限申請(qǐng)失敗..");
                                break;
                            case 102:
                                Log.e("LHC", "讀寫(xiě)權(quán)限申請(qǐng)失敗..");
                                break;
                            default:
                                break;
                        }
                    }

                    @Override
                    public void permissionRationale(int i) {//這個(gè)和permissionCustomRationale的調(diào)用二選一,根據(jù)自己的意愿誓禁。如果都寫(xiě)著也不影響懈息,只會(huì)調(diào)用permissionCustomRationale。
                        switch (i){
                            case 100:
                                Log.e("LHC", "請(qǐng)開(kāi)啟照相機(jī)權(quán)限");
                                break;
                            case 101:
                                Log.e("LHC", "請(qǐng)開(kāi)啟手機(jī)信息權(quán)限");
                                break;
                            case 102:
                                Log.e("LHC", "請(qǐng)開(kāi)啟手機(jī)讀寫(xiě)權(quán)限");
                                break;
                            default:
                                break;
                        }
                    }
                })
                .requestCustomRationaleListener(new ListenerWrapper.PermissionCustomRationaleListener() {
                    @Override
                    public void permissionCustomRationale(int i) {
                        switch (i) {
                            case 100:
                                new AlertDialog.Builder(PermissionActivity.this)
                                        .setMessage("親愛(ài)的用戶摹恰,我們需要開(kāi)啟您的照相機(jī)權(quán)限.")
                                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                ToastUtils.showShort("前往設(shè)置界面");
                                                Permissions4M.get(PermissionActivity.this)
                                                        .requestOnRationale()
                                                        .requestPermissions(Manifest.permission.CAMERA)
                                                        .requestCodes(100)
                                                        .request();
                                            }
                                        })
                                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                dialog.dismiss();
                                            }
                                        })
                                        .show();
                                break;
                            case 101:
                                new AlertDialog.Builder(PermissionActivity.this)
                                        .setMessage("親愛(ài)的用戶辫继,我們需要開(kāi)啟您的手機(jī)信息權(quán)限.")
                                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                ToastUtils.showShort("前往設(shè)置界面");
                                                Permissions4M.get(PermissionActivity.this)
                                                        .requestOnRationale()
                                                        .requestPermissions(Manifest.permission.READ_PHONE_STATE)
                                                        .requestCodes(101)
                                                        .request();
                                            }
                                        })
                                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                dialog.dismiss();
                                            }
                                        })
                                        .show();
                                break;
                            case 102:
                                new AlertDialog.Builder(PermissionActivity.this)
                                        .setMessage("親愛(ài)的用戶怒见,我們需要開(kāi)啟您的讀寫(xiě)權(quán)限.")
                                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                ToastUtils.showShort("前往設(shè)置界面");
                                                Permissions4M.get(PermissionActivity.this)
                                                        .requestOnRationale()
                                                        .requestPermissions(Manifest.permission.READ_EXTERNAL_STORAGE)
                                                        .requestCodes(102)
                                                        .request();
                                            }
                                        })
                                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                dialog.dismiss();
                                            }
                                        })
                                        .show();
                                break;
                            default:
                                break;
                        }
                    }
                })
                .requestPage(new ListenerWrapper.PermissionPageListener() {
                    @Override
                    public void pageIntent(int i, final Intent intent) {
                        switch (i){
                            case 100:
                                new AlertDialog.Builder(PermissionActivity.this)
                                        .setMessage("照相機(jī)權(quán)限申請(qǐng):\n我們需要您開(kāi)啟讀取照相機(jī)權(quán)限(in activity with listener)")
                                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                startActivity(intent);
                                            }
                                        })
                                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                dialog.cancel();
                                            }
                                        })
                                        .show();
                                break;
                            case 101:
                                new AlertDialog.Builder(PermissionActivity.this)
                                        .setMessage("手機(jī)信息權(quán)限申請(qǐng):\n我們需要您開(kāi)啟讀取手機(jī)信息權(quán)限(in activity with listener)")
                                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                startActivity(intent);
                                            }
                                        })
                                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                dialog.cancel();
                                            }
                                        })
                                        .show();
                                break;
                            case 102:
                                break;
                            default:
                                break;
                        }
                    }
                })
                .request();
    }

也可以將上面的實(shí)現(xiàn)寫(xiě)成:

        Permissions4M.get(this)
                .requestForce(true)
                .requestPermissions(Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE)
                .requestCodes(100, 101, 102)
                .requestListener(this)
                .requestCustomRationaleListener(this)
                .requestPage(this)
                .request();

    @Override
    public void permissionGranted(int i) {
        switch (i) {
            case 100:
                Log.e("LHC", "照相機(jī)權(quán)限申請(qǐng)成功.");
                break;
            case 101:
                Log.e("LHC", "手機(jī)信息權(quán)限申請(qǐng)成功.");
                break;
            case 102:
                Log.e("LHC", "讀權(quán)限申請(qǐng)成功.");
                break;
            default:
                break;
        }
    }

    @Override
    public void permissionDenied(int i) {
        switch (i) {
            case 100:
                Log.e("LHC", "照相機(jī)權(quán)限申請(qǐng)失敗..");
                break;
            case 101:
                Log.e("LHC", "手機(jī)信息權(quán)限申請(qǐng)失敗..");
                break;
            case 102:
                Log.e("LHC", "讀寫(xiě)權(quán)限申請(qǐng)失敗..");
                break;
            default:
                break;
        }
    }

    @Override
    public void permissionRationale(int i) {//這個(gè)和permissionCustomRationale的調(diào)用二選一,根據(jù)自己的意愿姑宽。如果都寫(xiě)著也不影響遣耍,只會(huì)調(diào)用permissionCustomRationale。
        switch (i) {
            case 100:
                Log.e("LHC", "請(qǐng)開(kāi)啟照相機(jī)權(quán)限");
                break;
            case 101:
                Log.e("LHC", "請(qǐng)開(kāi)啟手機(jī)信息權(quán)限");
                break;
            case 102:
                Log.e("LHC", "請(qǐng)開(kāi)啟手機(jī)讀寫(xiě)權(quán)限");
                break;
            default:
                break;
        }
    }

    @Override
    public void permissionCustomRationale(int i) {
        switch (i) {
            case 100:
                new AlertDialog.Builder(PermissionActivity.this)
                        .setMessage("親愛(ài)的用戶炮车,我們需要開(kāi)啟您的照相機(jī)權(quán)限.")
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtils.showShort("前往設(shè)置界面");
                                Permissions4M.get(PermissionActivity.this)
                                        .requestOnRationale()
                                        .requestPermissions(Manifest.permission.CAMERA)
                                        .requestCodes(100)
                                        .request();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .show();
                break;
            case 101:
                new AlertDialog.Builder(PermissionActivity.this)
                        .setMessage("親愛(ài)的用戶舵变,我們需要開(kāi)啟您的手機(jī)信息權(quán)限.")
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtils.showShort("前往設(shè)置界面");
                                Permissions4M.get(PermissionActivity.this)
                                        .requestOnRationale()
                                        .requestPermissions(Manifest.permission.READ_PHONE_STATE)
                                        .requestCodes(101)
                                        .request();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .show();
                break;
            case 102:
                new AlertDialog.Builder(PermissionActivity.this)
                        .setMessage("親愛(ài)的用戶,我們需要開(kāi)啟您的讀寫(xiě)權(quán)限.")
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                ToastUtils.showShort("前往設(shè)置界面");
                                Permissions4M.get(PermissionActivity.this)
                                        .requestOnRationale()
                                        .requestPermissions(Manifest.permission.READ_EXTERNAL_STORAGE)
                                        .requestCodes(102)
                                        .request();
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        })
                        .show();
                break;
            default:
                break;
        }
    }

    @Override
    public void pageIntent(int i, final Intent intent) {
        switch (i) {
            case 100:
                new AlertDialog.Builder(PermissionActivity.this)
                        .setMessage("照相機(jī)權(quán)限申請(qǐng):\n我們需要您開(kāi)啟讀取照相機(jī)權(quán)限(in activity with listener)")
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                startActivity(intent);
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.cancel();
                            }
                        })
                        .show();
                break;
            case 101:
                new AlertDialog.Builder(PermissionActivity.this)
                        .setMessage("手機(jī)信息權(quán)限申請(qǐng):\n我們需要您開(kāi)啟讀取手機(jī)信息權(quán)限(in activity with listener)")
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                startActivity(intent);
                            }
                        })
                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.cancel();
                            }
                        })
                        .show();
                break;
            case 102:
                startActivity(intent);
                break;
            default:
                break;
        }
    }

這樣權(quán)限申請(qǐng)就算完成了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瘦穆,一起剝皮案震驚了整個(gè)濱河市纪隙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扛或,老刑警劉巖绵咱,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異熙兔,居然都是意外死亡麸拄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)黔姜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拢切,“玉大人,你說(shuō)我怎么就攤上這事秆吵』匆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵纳寂,是天一觀的道長(zhǎng)主穗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)毙芜,這世上最難降的妖魔是什么忽媒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮腋粥,結(jié)果婚禮上晦雨,老公的妹妹穿的比我還像新娘。我一直安慰自己隘冲,他們只是感情好闹瞧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著展辞,像睡著了一般奥邮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天洽腺,我揣著相機(jī)與錄音脚粟,去河邊找鬼。 笑死蘸朋,一個(gè)胖子當(dāng)著我的面吹牛珊楼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播度液,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼厕宗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了堕担?” 一聲冷哼從身側(cè)響起已慢,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎霹购,沒(méi)想到半個(gè)月后佑惠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡齐疙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年膜楷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贞奋。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赌厅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轿塔,到底是詐尸還是另有隱情特愿,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布勾缭,位于F島的核電站揍障,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏俩由。R本人自食惡果不足惜毒嫡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望幻梯。 院中可真熱鬧兜畸,春花似錦、人聲如沸礼旅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)痘系。三九已至,卻和暖如春饿自,著一層夾襖步出監(jiān)牢的瞬間汰翠,已是汗流浹背龄坪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留复唤,地道東北人健田。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像佛纫,于是被迫代替她去往敵國(guó)和親妓局。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)呈宇、插件好爬、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,107評(píng)論 4 62
  • 自從有了寶寶,便再也睡不了一個(gè)整覺(jué)甥啄。再也不能自由自在的吃喝玩樂(lè)存炮。說(shuō)實(shí)在的,我并不是一個(gè)堅(jiān)強(qiáng)勇敢的媽媽蜈漓。在沒(méi)有寶寶之...
    凡也閱讀 176評(píng)論 0 0
  • 火鍋般的你 如果選擇一樣美食作比 你就是我愛(ài)的火鍋 寒冷的日子里你暖透我的腸胃和雙腳 炎熱的日子里你給我一場(chǎng)舒服的...
    浮想集閱讀 170評(píng)論 0 0
  • 我十二歲的時(shí)候穆桂,父親拿來(lái)厚厚的一本冊(cè)子,沉聲問(wèn)我:“當(dāng)不當(dāng)人匠融虽?”我當(dāng)時(shí)的回答是:“當(dāng)享完。”“好有额,這是祖師爺留下來(lái)的...
    62f3575241cc閱讀 4,701評(píng)論 1 27