android 文件轉base64 base64字符串轉文件 語音留言及語音播放

原文鏈接:https://blog.csdn.net/sunzhenglin2016/article/details/88813237

文件轉base64 base64字符串轉文件

**
 * Created by zlinsun on 2018/9/17.
 * hah
 */
public class FileBase64 {
    /**
     * encodeBase64File:(將文件轉成base64 字符串).
     * @param path 文件路徑
     * @return
     * @throws Exception
     
     */

    public static String encodeBase64File(String path) throws Exception {


        File  file = new File(path);
        FileInputStream inputFile = new FileInputStream(file);
        byte[] buffer = new byte[(int)file.length()];
        inputFile.read(buffer);
        inputFile.close();
        return Base64.encodeToString(buffer,Base64.DEFAULT);


    }
    /**
     * decoderBase64File:(將base64字符解碼保存文件). 
   
     * @param base64Code 編碼後的字串
     * @param savePath  文件保存路徑
     * @throws Exception
     
     */
    public static void decoderBase64File(String base64Code,String savePath) throws Exception {

        byte[] buffer =Base64.decode(base64Code, Base64.DEFAULT);
        FileOutputStream out = new FileOutputStream(savePath);
        out.write(buffer);
        out.close();


    }


}

語音留言:

/**
 * Created by zlinsun on 2018/9/18.
 * hah
 */
public class AmrRecorder {
    private MediaRecorder mRecorder = null;
    private String mFileName = "";
    Context mContext;

    public AmrRecorder(Context context) {
        mContext = context;
        File file = mContext.getCacheDir();
        File tempFile = null;

        try {
            // 創建臨時文件,注意這裏的格式爲.pcm  .amr  .mp3
            tempFile = File.createTempFile("recording", ".amr", file);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        this.mFileName = tempFile.getAbsolutePath();
    }

    /**
     * 開始錄音
     */
    public void startRecord() {
        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        //RAW_AMR雖然被高版本廢棄,但它兼容低版本還是可以用的
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
        mRecorder.setOutputFile(mFileName);
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

        try {
            mRecorder.prepare();
        } catch (IOException e) {
            Log.e("tag", "prepare() failed");
        }
        try {
            mRecorder.start();
        } catch (IllegalStateException e) {
            e.printStackTrace();
            Log.e("mRecorder.start()::", e.toString());
        }
    }

    public String stopRecord() {
   /*     if (null != mRecorder) {
            //設置後不會崩
            mRecorder.setOnErrorListener(null);
            mRecorder.setPreviewDisplay(null);
            mRecorder.stop();
            mRecorder.release();
        }
        mRecorder = null;*/
        if (mRecorder != null) {
            mRecorder.setOnErrorListener(null);
            mRecorder.setOnInfoListener(null);
            mRecorder.setPreviewDisplay(null);
            try {
                mRecorder.stop();
            } catch (IllegalStateException e) {
                // TODO 如果當前java狀態和jni裏面的狀態不一致,
                //e.printStackTrace();
                mRecorder = null;
                mRecorder = new MediaRecorder();
            }
            mRecorder.release();
            mRecorder = null;
        }
        String str = "";
        try {
            str = FileBase64.encodeBase64File(mFileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
}

語音播放

/**
 * Created by zlinsun on 2018/9/18.
 * hah
 */
public class AmrPlayer {

    private MediaPlayer mPlayer = null;
    private String mFileName = "";
    Context mContext;

    public AmrPlayer(Context context) {
        mContext = context;
        File file = mContext.getCacheDir();
        File tempFile = null;

        try {
            // 創建臨時文件,注意這裏的格式爲.pcm  .amr  .mp3
            tempFile = File.createTempFile("recording", ".amr", file);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        this.mFileName = tempFile.getAbsolutePath();

    }

    public static String name = "IyFBTVIKPEkye5B30efszkVq9yBgQcAAAWAe2wQEAASCvAQNZYA8Aid3P894AAAA8toAiAiIw1tMxAIIAAMQ0fSQ0MAAADy5zw3OZnnh4AHnr/AAAACAmQAAAAAAAAN4AAAAAAAAPBp7ZI5meeHgAefK8AAAAMAAAAAAAAAAAAAAAAAAAAA8ixaVvmZ54eAB56/wAAAAgAAAAAAAAAAAAAAAAAAAADxCdySWZnnh4AHnuvAAAADAAAAAAAAAAAAAAAAAAAAAPGEAiLZmeeHgAefP8AAAAIAAAAAAAAAAAAAAAAAAAAA8TvkflmZ54eAB54rwAAAAwAAAAAAAAAAAAAAAAAAAADxU/R+2Znnh4AHnz/AAAACAAAAAAAAAAAAAAAAAAAAAPEj1H5ZmeeHgAeeK8AAAAMAAAAAAAAAAAAAAAAAAAAA8VP0ftmZ54eAB58/wAAAAgAAAAAAAAAAAAAAAAAAAADxI9R+WZnnh4AHnivAAAADAAAAAAAAAAAAAAAAAAAAAPFT9H7ZmeeHgAefP8AAAAIAAAAAAAAAAAAAAAAAAAAA87N9gJA7hAZu13kKPGZmjZNBpoB/bPVZEwmsv7/WmkDwIvgMhjY5yBbp/v08HhFSvyoenvqDfAFBh/qQ7A0oAPBI0EzGci++eANdERJeU6BKLbFSxsU80JXAK0Umr3WA8FrIOKZ5n+88VKh/tW5JJe0WagPAB6a4sk5kX+YLR8DwWfBxZn4f/ng7V2OinSdDArdHK714Aw9GNtuYCHVmgPBogHDGfzvC+HYHKWNOTyE75QCWupul1EfqbgzT9W5A8HjZvIZ/htX4ZKjqZlyTJp1dspfEBjSQQElL3QJZzMDwgsmkpnz/4fgjVD0+/2DxomoSRCBSn+y4UUOZKOZcAPBYoZxmeQ+H+C4Q/gjPaa1fZtwHFA30mxIbaqKdj/8A8FqwjIZyJ8L4EfuqsNdzEMovFvP2j7fz8YNIQ+GtFkDwWKCMRmHPgngGBLL7qsl1HGyqP1CE3g2Q1BGGV2V0QPBYmPiGYNW6PEtUaTMAjO5stFM1OcuoVjcYDIVH/g3A8HCmxIZgX4G8I1Pw4L7Sswh/K9Q2Hm2ZNk4Q61ZpJMDwWuBYxmBn5/gGGLDVP9yT9x7540mI76Id8OI3rAsMQPCYoGimYYeH+EYHst+KMsSdN8Jcf9P934qwHxyAkM0A8GigdGZmJ8PpZhHpiKGT1IA3zSK4kcmCS6bQlqKXY0DwmIiQhmY/w+k2AewrP9vBQ6cCIGCgbAfN/DAMgQ0cgPBooHRmZn+HrVYB8Lgh3SweleGg9KDXr4MMErPrysfA8HigfKZmf8K8ZKuv5H9Qna+lT4KFYXZ100MPEgC5HgDwWqB0ZmS3w/gDUnWrY3je0JgtvFNC59GJgWK+j9NTgPBwllnGYc2iaRYFaRCua+AETscgDKrzCSW+OmunDbZA8DjIacZhn4el3gFxrYMmfKcg4JCPtoIjoEBu5wGpDcDwcJZZxmGf4Q92AWxwI9UdSt9EhsDryvTCghx++4T6wPBa4JCGYZ/n6V4Ec84kqvQDrQnPXgNpY0wijoM+zNhA8JCmHKZhz/h4BgezNeykA2oiDR4wpwsw11Mc/XSOlYDweNmkpmH/5fgmDSUsNlvXn82ulOIJ2T0maySnBP7agPB4oJCGZg+FeBS73UMafOS7SjsFLAjrhpc92STmiktA8HjhpKZmH4fpEf+q68P4BAJMl9BP6fEE999J4hm6WYDwWKB4ZmYHgOHeGHaevRUKZ3R9xROI0zv4ItNAB6ZVAPBIyFxGY1nmS3YQsLDt/0jYfblS31ym7YmzeoCgIREA8FjITcZkn4XLM1FR2Bq/EEKKP3KBngUOT8Z4ClByacDwcMhdxmHn57xWBWvF/rREAHAkBGYcNul6B/EBaL43gPBY01hmYZfHeA4AsUzLVY/2nXM5y0Hbqz+hxPr1u2dA8JjYkKZkn/T4A1escFg1DXF6OyGqOCu2ugBF4mAJj8DwgKY0ZmYXw/guCG0xDBwx0qU7ZhgdrfH4PsOApRcgQPCYoaSmZh+H6RSqMk+XLwwEk7+xw/QlL5S3+f6jXSdA8GjWNIZkr5bwjgfwENrSBBUjDvX6uCyo4yNA03hU9IDwcKGkZmHfgvgGBHI2Sl2n3Y+G0JLYtm81CKmEpGSywPBaoF3GY1eH8I4PbgyvLwHUx5xsum3nCqZLLq93d96A8DinCcZm9LJh3g1wldRSqBGMFY0/GyVACDGtBVrtpUDwOrbFxm19o8OzVXEfqKhxRslAQGp2dI0wjE9CiGXEwPBYyFHGeS/paRYV8sz5mTQzgrIt/N46RjWgCYZ4l2nA8HqglIZzp/Z4Q1x3TYemXkYkizdIt/xQtk7mNGEzTQDwgItZxnK/9HhMq/xbagn2KP/wEo3lnHf4CoA0uoSkwPCgoaRmeAeE+AYD9x2LKl72ksmv5PlpqOW0QwV3NgMA8ICJpIZ4F6XpHgH+KlzYqvCBNJR2AfyxwHu2A0uQGwDweKGkhnKnhPgDXfGDwW0fUw4meAcRlkxNsS2k7p72QPBa4b3GZ5+FvEYFcfWMhBgIVD9jp2z2/aq8IE30f5DA8FjOWcZmY8VpG1VueVQKtVMNGILpAajtplgyZvucyoDwWuBMRmY55qXcqrJpQnCdD54LtP/k41wesoVoDchswPBYyE3GZkfpHmtXcJnjA9xfrluVu6iEpsj0q8EJykjA8HLglEZmJ/geZhCutMtmkarLuaDjNZOX5gAQgTcSTkDwgIm8pmefp9omE7TwFVviOrIT7ZxdwazlLVKvvWA9QPCYzhxGbUfDaXYRLUp9rUU7kZNnj0mesWpBt/QDBNiA8ICJvIZn9+Gtc1fyrVZZdCwlnBwIY1+SICIAJX0l+kDwgKYcRmefh7xGBTOZ4AlUFoQzqgHiaKDhoBn/GfAAwPB40b3GZnfD+ASrcCXGkDgd6xeQG51cgDCc62nC/yrA8FjOWEZmHaItU1auP2pCPUH3RDnKnAuhDsB6dnIWMoDwOMhMZmxY1iXc6Kk4YXfYwlATliOygL5noYMDgno0wPAgYCwmZ+Dxj2YP74meJJUQLcdhT+A/wE0fmhpwCLjA8BswXGZ4P/6eTgWxWiUltwUZ1THLhxJY4zvta2+RJEDwmshV5nI/9+k7RilP4fA8R2Xm25MWOjG9Y1wZUt1JwPBo0aymbXdteA4McXNLzbAAHBwywbAHkduulv2xaVhA8KDJpcZ+B+H4BgdpLiwh3FJAwqLHiArkQH5I4v8W48DweKVopn4Hh+kWBi+sTvGl7/oz3QbJmZtm+w4CJc9JAPCgzWiGfK+HYb4B68x+HKhw7gEt4rrVzdfgD2PYj9XA8HihsGZ5/4fh3gBxHBjw9A5teSU27B8yKA2HiBICxIDweMtZxnnto+k7V18buwH8LbyC7Ov4qqEX6nGDDmSZwPA64FxGe12jHmYatTYLTjbnxIgVBqo7r8H3BoeeOIwA8DiYUcZ/mHmH+f+tXJo3MZQSYrQlijJKEMMRFKlBKoDwIMhEZn53jo9zTG7GlLmtQFu/Vnmc9FBXr+HCjrH0wPBwe3BGfz/+HmYEtv9jI17KIkfOII4QLPQT+sR7xkVA8GigdIbVd/b4DhXzyFwyBHbTXebv0pF77bDzx7bybgDwmJiUR4G3vTxWGTJ30GDzYuIqoEDYK/HnI9lbb8TDgPCAoIyngefl6VYSMsz1haSJJHV4ADAmcqItfpPuw8uA8JhhpEeBLaN4BgCXTWZ8mQnKZdr6CvMhSdotqVy62sDwgHYsZyq/gtojUHOeC59TJAHw9RR5dfGgvt3SWIIZwPB4nixmfyeHvENccRoyLJMFo6y3ACjH8WSyE/DaPeRA8GiIcEZ/F4BS80Qx1rlyR7k0QZ2GsYMysvmNGTkBQcDwMMhMRntekCWeCLL6yjuPR3CScGqzE5S0Y8wFb9fkAPA4iExGftPEh/NUsqVpv4Qriq47w8zdU6XDy0XOAtAA8FjIVEZ/D6/wjgr11oij6hgxgvgUoDZN2zo3/d1fdMDwWuBwZn8v63gTVLOAq+PH/TAQMhJtcWCxMf6/bS6xwPCgli3Gf//AeAYb8/TZVkCTSJDsJQeae9oQx9NIYkiA8HjRrGeBn+f4BgbSo79MbIX5XKRXYA0HP+1IISgwBwDwoHh0h4HPj3gGB++Hgk8BkSEUxkREcmPJaea3LcUQwPB4oaRHgNeHWiYFM1TpA3FtKAy6ZDlnYBJ2Pr87AGVA8KB+LIeAF4f4DgncQxJ+5DnB0BF57f/foIklxrH+9YDwWKNYZn/XgDTOBnZzJ166sL9iAnlEIHqmJkA2Sy7MAPB4yFxGf48N06SqMFHWrkO02cEcE0jSTSeufr+k38pA8DDITcZ+2eYtRgNzu1jih57JoI6NTcfxnYHkg95loUDwWKBMRn//jg92FjWTlsq2wo5y3gQqUuadIBc8e83NQPBIyHBGf9/8HmYEszLFUofnyP0BjDjYQhIReMI53rZA8ILjWIZ//+94HgZ3INg8JsAol0MAJMBZTCQizrWv90DwmH38h4APlvCuEe0EVrK1aaUEXHJgdzbDW18UJYMYQPCAoaRngH+U+EYAcxnEPqPCBq1BHn73vDANsPUlXR3A8JiRpIeBj4Q8Rg3u9cP9+aRURZtlzZCRCLt4BWVoEYDweM4sh4GH4C1WDfQPfvyKKddluQ2J6+gu63sEdDnQAPBoyHHHgH8IYd4Bd8ks7R7lmDT3bX+ZbUnjrzBIYAXA8DDITEeAeeZhngDylpoucO7oCisPsMJ3Uj+ZCvUadcDwOJBMR4Ap5BbmFDEH34Ev9QyHptvP8bIkc7QJD7H4wPAYyFBGf3depd4Os9SpjogFrzM8Ximsz8BSQM0azivA8GjORCZ/9+ZwjK/3Wioq7jed3kwFN+sFBajeY6ZMdADwWqBwRn//9uk2DTMP03ZDs9EwZhmAFZ27xtlJy14WgPCAeaSHgMeaeAYF9liXNn5N6CQJKuxj0klY6A+GNqLA8JjIjIeBvafaZhXiPfJXwwNhmUcUaUtgIrYLgREB+0DweHGlx4Yd62kWAXEVYCy/C/F8GDKv+xQSH0lIC1LYwPB4y1iHhh61eEYF7pOLGrWz/8Dc6SHBL//garKGNwJA8Gh7WceGF4GtVgN37hNX6tbWGCOIAph6BA+cxjEn1wDwWrZFx4NPhdomEXWxfXCGpcfhGH8Yk0BrBMHP7+k4gPA4eE3HgenkB74Rdz/j2tqzrQcjqFCy9/NGL89yjxRA8DiYUEeGHaGljgwtL0jZYQif9JGJP3/AclBnxZBN4MDwOJBNx4efyw8x/bO3Xq1gDoCWt9QSvGAAA6Tpda8eQPA4oExHhaffWiYxN4zNmwYM7oFTH1i0se8dHx19V87A8Hh7WceHr814BK3xkyWM25gGBuIDhRlo5Busko1+qEDweIh0R4c/5ukbVzS65JCqurMJp2aQ/YCZ2J4S95DCQPCYlhyHhydLrXYT8chh8Iw56FsfW0A4EXgYuScWLKVA8HjQdEeGT2nwjgEyzPsWq4NKKuITPV/Sov2Nv/qJ1MDwmH4tx4S/g6Xcq3aot3iuABbOUFnA3zZSRX8c49ueAPBoyHHHge+GaVSrctCLtzhUf0vEqSEEqfbgYO16bAWA8FjITceBn4B4BhN2Y2sYrkAAKQqMylqWAtHVfAx3VUDwMMhNx4Hss0O+AXDUjwd0/toMyGd5A3ctUoo6XIZ8wPA4mExHgNcepdyusZSIWts74w/qM6NCpIaMtxTuONrA8HNGREeAV/J4Zgg3QqhuLk4Hm1xCZ9fjQqjTy/l69cDwaMtYp4Af8vgmAbdK7PEmGLmAxYoQpCjCDgXp5c4nwPCYoaRHgS+F+AYFLfTQr/3rGDzJQGbD2WV4IYSHzy1A8ICWLKeAfpdpHgWw5Mm0wzIUu8Sjoowmw6Rw72NYBMDwmKGkZ4HP4bxOGHAiWAn0td4mIiYyY6XiBf75eaCWQPB4mHCHgbeBUq4Z9/31CrYtHc1shBOck51hd/JJeC4A8HrYcceDT4UedLt08bcIDgT+HK/UmVe3bgVpDsoJ9UDwOMhNx4G8P9omBXHJCBz7RsnMEzM4BJccRcNEFde4QPA4yFHHhpDTJZZBbSzKP4l/GayARMxqAZWsZ8PBAk7A8CBAREeBae2Pdgkw4W485BBb8O1EnMXY+AierfO7EcDwWktwJyu//3gWIfeB91FWYmWX25lJIIVybJ73oj6HgPCAliyngW5/+A4OC5snjuaHlSNPQo6kQ0Sw81VWadbA8JrhpEeDT/KtdkIwfEh1IBYPppLcrOYAncVYZ+xh8cDwaH4sh4bP0PCOEFISOsniJL0xPWKoQx0QQAcP+wu0APCY0bxHh+fh8M4A8jcAJJifwHTzdSKyFT+MpbYGmcUA8GiQcIeNX4B4BgZ28Zj0bl/wcFmhAc+7Y9nmyVZT0QDwWMhxx41fhDxGDZ1mZKWcTmWVDiAb1P4S4X8oafO9APA4yE3HmCaVLVYJcZLZCoeSxKeBdgywHTiBJYg08b+A8DKoUceYuNYl1Kuwx9nWgHVtmjYvgEnIGx5/I1fveIDwIshNx4f9uxbLVXHm6aYcGqV0fylslwfmaXW3PLauQPBKtwRHh4f/vAYEt+SHP/YQAEED9+PHmvyeP5B+kUJA8GjIlceGn+/aZKN2C4KgPpKpzLRO4DTbdVbejbinJMDwmHm8p4efWvgLVC14jxh/cHJoQ4BrvHSgynSGNgD3wPB62ZBHh6/S2iYXMBxiylNAbYoAW+CAYEe1s1gMDjCA8JrZsGeNX+laNgZenCBvrJvMMXXl8LeP8UbFGn0K3QDwaKGkR5KvhbTOATEnB/yHnZmNL6v/5fx2EsmWH4QJQPB4kI3Hh/HmYZn/cL0R9ritjA0CVmgz743gSwcnhdrA8Gh2LGeYlpctfguyzNCa28OnsZELk8upiW3NNky3v4DwIOCUR7VMHkt1iSgIWJo0HP6UCEQa/QHnga31AGH9wPAR6aRtCWAHQ69pdtvQsgrdXY9JpmNPilMRzW2O7pTA8QsmLH08wC4H/lXoqJpfubWSPwf3xoejgghn8bYfnUDwUP2gX5nYLZ5D6ffSUxXaHXOTRvdIvpzMeoA5HsZHAPEU3mhq9+gxD3asfXOJmV51X+C6YVguEbmw2JfQev4A8ND57JuPCIUH/Jqx39U/PCQNvezYNjRcruGKiyrdo0Dzed4Mb9jICwf7bWog/sjcZEgoVAcyKPm8cdpbLv7+wPA5i1x9/piGB/4S8TbOzSiyCLf/L1kyzCrNudc68Y8A82HogIV6CEiH+bqtiMAIzb6pDYfHIB6wC1kwwwd51ADwIYtgndMgOQf8N7AW7ODskEegQcvxrHXNpaxNe4JtQPCCpeE49iQSB/1ws+RygL+21jNbe9jp4nDT0v7JXDFA84FWGL22CggH/y6wKBFsvFiQPceWswet+O2zHu/Bp4Dzge3EeTiIMof7qfP9Zb3YgdtPOhG4o7OfSGQqYT5DAPB5diB7y+AcJZ3wc+3CApdZM3Z8oIrRA+UXsbPaJUFA84IhnRnzAiwPct0w8jRs5I/RqteaLzD6Z8cGRioO+ADwbQiZ26fw4SXPn2yNKfbt4ETKQK0Azm+OC8urRt6vwPA6ocUpwSiLw7tcrxWsic3L++XRtaP6c4jAmWXVbprA8CFwZdmdoGxSqYewAmFX3LPM9AwSH0iTgz2Gq8ScQwDweZSdH9yAHkO9+3YXEs9KT+3Yw94oe6mfBj0zJMQ3QPAhsERcC+AuQ7ptLdptPoEZf4/6baE37oyivjf7u83A8HlRkJy5ECeH+cyJOkr7gWxiMYchEd7RtTFG27/bCIDzgeiQfXApB490IPIyYkuYpa67LhoYgEnEHQ2HJJa5wPBpjZS7qvhHB+usNP51o0qhzyX6+faPvuLcBgshEwWA8FKjWJmGuEgH/aTtbStImde/mmOB5m/xkQ5X3Vl8YcDzgU3ki6jRQMO6grdM+qE+AMSGtHpZKRWg5nQlcshkQPBrIG15KhAl0o9zD9l1Wzy69EbFHx2RkHTI8DeVNoQA8RFQoO8ccGCH/Gsw/Q0avOy1aZVvEFgylcnsJ6nwk0DwCbCMWao2JUO923DVqMmLYPt7ugixYvcr8HCLfr+6APFJzfSxP6xDy3SBLIFotVEAAK230kplEjOAzkKcDj3A8AlojV2F/IitT1m14PPAci2eIc99n1SMs0LgmMYp2ADxE7YEeHxwGhbs9aqm40z3knT4zF4GL/aePqQ2kEnygPODIbSLyvoZYZ6wtpYatMLq2y90uWh0BMiGWETEiTrA8DmQfHPuii1DvDdrd0nMW13y9aesgVVixkn5hNofn8A==";

    public void startPlay(String str) {
        try {
            FileBase64.decoderBase64File(str, mFileName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        mPlayer = new MediaPlayer();
        try {
            mPlayer.setDataSource(mFileName);
            mPlayer.prepare();
            mPlayer.start();
        } catch (IOException e) {
            Log.e("tag", "prepare() failed");
        }
    }

    public void stopPlay() {
        if (null != mPlayer) {
            mPlayer.release();
        }
        mPlayer = null;
    }

}

權限:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.RECORD_AUDIO}, 1);
            isPermissionsRecord = false;
        }
/**
     * ⑨重寫onRequestPermissionsResult方法
     * 獲取動態權限請求的結果,再開啓錄製音頻
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            isPermissionsRecord = true;
            SnackbarUtils.make(this, "權限申請成功,請重新發送");
        } else {
            isPermissionsRecord = false;
            SnackbarUtils.make(this, "拒絕該權限將無法留言");
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

Base64 的原理、實現及應用:https://blog.csdn.net/weixin_40811410/article/details/81950142

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章