lmw
2025-04-03 8d72ec1b07a4fe0863b41b1140a8c0e679867b93
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package com.sinata.xqmuse.ui.mine
 
import android.Manifest
import android.graphics.Bitmap
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.util.Log
import android.webkit.WebChromeClient
import android.webkit.WebSettings
import android.webkit.WebViewClient
import androidx.core.os.bundleOf
import androidx.core.view.drawToBitmap
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.utils.BitmapUtils
import com.github.zackratos.ultimatebar.UltimateBar
import com.share.utils.ShareUtils
import com.sinata.xqmuse.R
import com.sinata.xqmuse.dialog.ShareDialog
import com.sinata.xqmuse.network.Apis
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.utils.Const
import com.sinata.xqmuse.utils.interfaces.StringCallback
import com.tbruyelle.rxpermissions2.RxPermissions
import com.umeng.socialize.bean.SHARE_MEDIA
import com.ypx.imagepicker.utils.PBitmapUtils
import kotlinx.android.synthetic.main.activity_share.*
import kotlinx.android.synthetic.main.layout_share_img.*
import kotlinx.android.synthetic.main.layout_share_img.view.*
import org.jetbrains.anko.backgroundColor
import org.jetbrains.anko.toast
import java.io.File
import java.io.FileOutputStream
 
class ShareActivity:BaseActivity() {
    private val userId by lazy { intent.getStringExtra("userId") }
    private var qrcode = ""
    private var poster = ""
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_share)
        UltimateBar.with(this)
            .statusDark(true)
            .create().immersionBar() //沉浸状态栏
        val settings = webView.settings
        settings.javaScriptEnabled = true
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.defaultTextEncodingName = "utf-8"
        settings.domStorageEnabled = true
        settings.setSupportZoom(true)
//        settings.textZoom = 200
        settings.useWideViewPort = true
        settings.loadWithOverviewMode = true
        settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
        webView.webChromeClient = object : WebChromeClient() {}
        webView.webViewClient = object : WebViewClient() {}
        webView.backgroundColor = 0
        webView.background.alpha = 0
        getShareInfo()
        iv_back.setOnClickListener { finish() }
        tv_action.setOnClickListener {
            val shareDialog = ShareDialog()
            shareDialog.arguments = bundleOf("isSave" to true)
            shareDialog.callback = object :StringCallback{
                override fun onResult(rst: String) {
                    if (rst == "wx"){
                        ShareUtils.share(this@ShareActivity,SHARE_MEDIA.WEIXIN,Const.SHARE.SHARE_CONTENT,Const.SHARE.SHARE_TITLE,Apis.SHARE_APP.format(userId),null,"")
                    }else if (rst == "circle"){
                        ShareUtils.share(this@ShareActivity,SHARE_MEDIA.WEIXIN_CIRCLE,Const.SHARE.SHARE_CONTENT,Const.SHARE.SHARE_TITLE,Apis.SHARE_APP.format(userId),null,"")
                    }else{
                        RxPermissions(this@ShareActivity).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe {
                            if (it)
                                try {
                                    toast("图片生成中…")
                                    val copyPath = PBitmapUtils.getPickerFileDirectory(this@ShareActivity).absolutePath  + "/" + System.currentTimeMillis() + ".png"
                                    val file = File(copyPath)
                                    if (!file.exists()) {
                                        file.createNewFile()
                                    }
                                    val fors = FileOutputStream(file)
                                    layout_share.drawToBitmap().compress(Bitmap.CompressFormat.PNG, 0, fors)
                                    fors.flush()
                                    fors.close()
                                    MediaStore.Images.Media.insertImage(this@ShareActivity.contentResolver, file.absolutePath, copyPath, null);
                                    toast("保存成功")
                                } catch (e: Exception) {
                                    Log.e(Const.Tag, e.message ?:"")
                                    toast("保存失败")
                                }
                            else
                                toast("缺少文件存储权限")
                        }
                    }
                }
            }
            shareDialog.show(supportFragmentManager,"share")
        }
    }
 
    private fun getShareInfo(){
        HttpManager.shareInfo().request(this){_,data->
            this.qrcode = data?.qrCode?:""
            this.poster = data?.poster?:""
            data?.apply {
                iv_code.setImageURI(qrCode)
                val sHead =
                    "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
                webView!!.loadDataWithBaseURL(
                    null,
                    sHead + rules,
                    "text/html",
                    "utf-8",
                    null
                )
                iv_share.setImageURI(poster)
                //分享view
                iv_poster.setImageURI(poster)
                iv_share_code.setImageURI(qrCode)
            }
        }
    }
 
}