Commit 93028a05 authored by yanglin's avatar yanglin

通知布局及similar页面功能完善

parent e8f694cc
......@@ -16,6 +16,8 @@ import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.kongzue.dialogx.DialogX
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.notification.NotificationHelper
import com.xm.test.myfilemaster.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.util.UrlManager
import java.util.concurrent.TimeUnit
......@@ -38,6 +40,8 @@ class MainActivity : AppCompatActivity(), MaxAdListener {
private fun initView() {
NotificationHelper.postNotification()
val isAgreeAppPage = MyApplication.mSp?.getBoolean("isAgreeAppPage", false) ?: false
if (isAgreeAppPage){
startAppPage()
......
package com.xm.test.myfilemaster
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.SharedPreferences
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.cloud.cleanjunksdk.task.CheckSdkCallback
import com.cloud.cleanjunksdk.task.Clean
import com.cloud.cleanjunksdk.task.CleanSDK
import com.cloud.cleanjunksdk.tools.Region
import com.trustlook.sdk.cloudscan.CloudScanClient
import com.xm.test.myfilemaster.ad.GravitySensorManager
import com.xm.test.myfilemaster.notification.ActionBroadcast
import com.xm.test.myfilemaster.util.UrlManager
class MyApplication : Application() {
private lateinit var gravitySensorManager: GravitySensorManager
companion object {
var mCleanSdk: Clean? = null
@SuppressLint("StaticFieldLeak")
var mCloudScan: CloudScanClient? = null
var mSp: SharedPreferences? = null
@SuppressLint("StaticFieldLeak")
@JvmStatic
lateinit var fContext: Context
}
override fun onCreate() {
super.onCreate()
fContext=this
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration ->
// {
// appOpenManager = ExampleAppOpenManager(applicationContext)
// }
// )
// }
mSp = getSharedPreferences("fileManager", MODE_PRIVATE)
CleanSDK.init(this, this, Region.INTL, object : CheckSdkCallback {
override fun onSuccess(p0: Clean?) {
mCleanSdk = p0!!
Log.e("yanglin", "onSuccess: clean INIT")
}
override fun onError(error: Int) {
Log.e("yanglin", "onError: INIT error=$error")
}
})
mCloudScan = CloudScanClient.Builder(this)
.setRegion(com.trustlook.sdk.data.Region.INTL)
.setConnectionTimeout(30000)
.setSocketTimeout(30000)
.build()
AppLovinSdk.getInstance(this).initializeSdk {
}
AppLovinSdk.getInstance(this).mediationProvider = AppLovinMediationProvider.MAX
initBroadcast()
}
private fun initBroadcast(){
gravitySensorManager = GravitySensorManager(this)
gravitySensorManager.registerListener()
val filter = IntentFilter()
filter.addAction(Intent.ACTION_SCREEN_OFF)
filter.addAction(Intent.ACTION_SCREEN_ON)
filter.addAction(Intent.ACTION_PACKAGE_ADDED)
filter.addAction(Intent.ACTION_PACKAGE_REMOVED)
filter.addAction(Intent.ACTION_USER_PRESENT)
filter.addAction(Intent.ACTION_POWER_CONNECTED)
filter.addAction(Intent.ACTION_POWER_DISCONNECTED)
filter.addAction(Intent.ACTION_BATTERY_CHANGED)
filter.addAction(Intent.ACTION_MEDIA_MOUNTED)
filter.addAction(Intent.ACTION_MEDIA_REMOVED)
filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED)
filter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL)
filter.addAction(Intent.ACTION_DEVICE_STORAGE_LOW)
filter.addAction(Intent.ACTION_DEVICE_STORAGE_OK)
filter.addDataScheme("package")
registerReceiver(ActionBroadcast(), filter)
}
package com.xm.test.myfilemaster
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.SharedPreferences
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.cloud.cleanjunksdk.task.CheckSdkCallback
import com.cloud.cleanjunksdk.task.Clean
import com.cloud.cleanjunksdk.task.CleanSDK
import com.cloud.cleanjunksdk.tools.Region
import com.trustlook.sdk.cloudscan.CloudScanClient
import com.xm.test.myfilemaster.ad.GravitySensorManager
import com.xm.test.myfilemaster.notification.ActionBroadcast
import com.xm.test.myfilemaster.util.UrlManager
class MyApplication : Application() {
private lateinit var gravitySensorManager: GravitySensorManager
companion object {
var mCleanSdk: Clean? = null
@SuppressLint("StaticFieldLeak")
var mCloudScan: CloudScanClient? = null
var mSp: SharedPreferences? = null
@SuppressLint("StaticFieldLeak")
@JvmStatic
lateinit var fContext: Context
}
override fun onCreate() {
super.onCreate()
fContext=this
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration ->
// {
// appOpenManager = ExampleAppOpenManager(applicationContext)
// }
// )
// }
mSp = getSharedPreferences("fileManager", MODE_PRIVATE)
CleanSDK.init(this, this, Region.INTL, object : CheckSdkCallback {
override fun onSuccess(p0: Clean?) {
mCleanSdk = p0!!
Log.e("yanglin", "onSuccess: clean INIT")
}
override fun onError(error: Int) {
Log.e("yanglin", "onError: INIT error=$error")
}
})
mCloudScan = CloudScanClient.Builder(this)
.setRegion(com.trustlook.sdk.data.Region.INTL)
.setConnectionTimeout(30000)
.setSocketTimeout(30000)
.build()
AppLovinSdk.getInstance(this).initializeSdk {
}
// AppLovinSdk.getInstance(this).mediationProvider = AppLovinMediationProvider.MAX
initBroadcast()
}
private fun initBroadcast(){
gravitySensorManager = GravitySensorManager(this)
gravitySensorManager.registerListener()
val filter = IntentFilter()
filter.addAction(Intent.ACTION_SCREEN_OFF)
filter.addAction(Intent.ACTION_SCREEN_ON)
filter.addAction(Intent.ACTION_PACKAGE_ADDED)
filter.addAction(Intent.ACTION_PACKAGE_REMOVED)
filter.addAction(Intent.ACTION_USER_PRESENT)
filter.addAction(Intent.ACTION_POWER_CONNECTED)
filter.addAction(Intent.ACTION_POWER_DISCONNECTED)
filter.addAction(Intent.ACTION_BATTERY_CHANGED)
filter.addAction(Intent.ACTION_MEDIA_MOUNTED)
filter.addAction(Intent.ACTION_MEDIA_REMOVED)
filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED)
filter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL)
filter.addAction(Intent.ACTION_DEVICE_STORAGE_LOW)
filter.addAction(Intent.ACTION_DEVICE_STORAGE_OK)
filter.addDataScheme("package")
registerReceiver(ActionBroadcast(), filter)
}
}
\ No newline at end of file
......@@ -184,6 +184,7 @@ class MediaActivity : AppCompatActivity() {
MyApplication.mCleanSdk?.delete(File(fileBean.filePath))
mItemDataList.remove(fileBean)
}
customDialog.dismiss()
mItemAdapter?.notifyDataSetChanged()
}).show()
customDialog.isShowEditText(false)
......
package com.xm.test.myfilemaster.activity
import android.os.Bundle
import android.view.View
import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.databinding.ActivityScanLargeFilesBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
......@@ -12,8 +14,9 @@ class ScanLargeFilesActivity : BaseActivity() {
private lateinit var mFilesItemListView: ListView
private var mFileItemList = ArrayList<FileBean>()
private lateinit var mLargeAnimation : View
override fun getLayout(): Int {
return R.layout.activity_scan_large_files
}
......@@ -28,13 +31,13 @@ class ScanLargeFilesActivity : BaseActivity() {
fun mInitView(){
mFilesItemListView = findViewById<ListView>(R.id.files_item_listview)
mLargeAnimation = findViewById(R.id.large_files_animation)
WaitDialog.show("Please Wait!")
Thread(Runnable {
mFileItemList = FileUtil.search10MFiles(this, 10 * 1024 * 1024)
runOnUiThread {
mLargeAnimation.visibility = View.GONE
setAdapter(mFilesItemListView, mFileItemList)
WaitDialog.dismiss()
}
}).start()
setOnClickBtn()
......
......@@ -14,8 +14,10 @@ import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.cloud.cleanjunksdk.task.SimilarScanCallBack
import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.ImageItemAdapter
......@@ -43,15 +45,10 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
private lateinit var mListView: ListView
private lateinit var mRecycleView: RecyclerView
private lateinit var mFileCheckedItemList: ArrayList<String>
private var mImageItemAdapter: ImageItemAdapter? = null
private var appInfoList = ArrayList<PicInfo>()
private var mSimilarBeanAdapter: SimilarBeanAdapter? = null
private var mDataBeans = ArrayList<ArrayList<FileBean>>()
private var mSimilarDatas = ArrayList<PicSimilarInfo>()
private var mSimilarDatas = ArrayList<ArrayList<FileBean>>()
companion object{
......@@ -88,6 +85,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
mCancelBtn.setOnClickListener(this)
mQuitBtn.setOnClickListener(this)
mEditBtn.setOnClickListener(this)
mDeleteBtn.setOnClickListener(this)
mCheckItemSelectAllBtn.setOnClickListener(this)
mListView = findViewById(R.id.files_item_listview)
......@@ -97,19 +95,10 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
mRecycleView.adapter = mSimilarBeanAdapter
setNumber(0)
// mImageItemAdapter = ImageItemAdapter(this, mDataBeans )
// mListView.adapter = mImageItemAdapter
startDuplicateImages()
// mBaseViewModel = ViewModelProvider(this)[BaseActivityViewModel::class.java]
// mBaseViewModel.setNumber(0)
// mBaseViewModel.myInt.observe(this, Observer {
// mSelectNumText.text = String.format(getString(R.string.select_0, it.toString()))
// })
// mDeleteBtn.setOnClickListener {
// }
}
private fun startDuplicateImages() {
......@@ -124,13 +113,13 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
override fun onSmilarEmitOne(p0: PicSimilarInfo?) {
var listPath = ArrayList<FileBean>()
// for (i in p0?.getmList()!!) {
// val fileBean = FileBean()
// fileBean.filePath = i.path
// listPath.add(fileBean)
// }
for (i in p0?.getmList()!!) {
val fileBean = FileBean()
fileBean.filePath = i.path
listPath.add(fileBean)
}
// mDataBeans.add(listPath)
mSimilarDatas.add(p0!!)
mSimilarDatas.add(listPath)
}
......@@ -190,15 +179,28 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
customDialog.setsCancel(View.OnClickListener {
customDialog.dismiss()
}).setsConfirm(View.OnClickListener {
for (fileBean in mImageItemAdapter?.mCheckedLists!!){
for (fileBean in mSimilarBeanAdapter?.mCheckedLists!!){
MyApplication.mCleanSdk?.delete(File(fileBean.filePath))
for (i in 0..<mSimilarDatas.size){
mSimilarDatas[i].forEach {
if (fileBean.filePath.contains(it.filePath)){
Log.e("yanglin", "onClick: ${mSimilarDatas[i]}", )
mSimilarDatas[i].remove(fileBean)
return@forEach
}
}
}
}
startDuplicateImages()
mEditBtn.visibility = View.GONE
mSimilarBeanAdapter?.setData(mSimilarDatas)
mSimilarBeanAdapter?.notifyDataSetChanged()
mSimilarBeanAdapter?.refreshItem()
setNumber(0)
customDialog.dismiss()
}).show()
customDialog.isShowEditText(false)
customDialog.setsTitle("Delete")
customDialog.setsHint("Are you sure you want to delete ${mImageItemAdapter?.mCheckedLists!!.size} item?")
customDialog.setsHint("Are you sure you want to delete ${mSimilarBeanAdapter?.mCheckedLists!!.size ?: 0} item?")
}
R.id.checkbox_item_all ->{
isClickCheckBoxAllBtn = !isClickCheckBoxAllBtn
......@@ -214,6 +216,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
fun cancel(){
// setStateCheckedMap(false)
mSimilarBeanAdapter?.selectAll(false)
mNewBtn.visibility = View.VISIBLE
mQuitBtn.visibility = View.VISIBLE
mEditBtn.visibility =View.VISIBLE
......
package com.xm.test.myfilemaster.ad
import android.text.TextUtils
import com.xm.test.myfilemaster.MyApplicaiton
import com.xm.test.myfilemaster.MyApplication
object AdUtils {
......@@ -31,7 +31,7 @@ object AdUtils {
return false
}
val adNum = MyApplicaiton.fContext.queryDataStoreBlock(getIntString(slot + "_ad_show_num") , 0)
val adNum = MyApplication.fContext.queryDataStoreBlock(getIntString(slot + "_ad_show_num") , 0)
if (adNum >= adEntity.show_limit) {
return false
}
......@@ -45,7 +45,7 @@ object AdUtils {
* @param interval 单位分钟
*/
private fun canNextTime(key: String, interval: Int): Boolean {
val lastPushTime = MyApplicaiton.fContext.queryDataStoreBlock(getLongKey(key), 0)
val lastPushTime = MyApplication.fContext.queryDataStoreBlock(getLongKey(key), 0)
return (System.currentTimeMillis() - lastPushTime) / 1000 > interval
}
......
......@@ -8,6 +8,7 @@ import android.util.Log
import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener
import com.blankj.utilcode.util.GsonUtils
import com.trustlook.sdk.BuildConfig
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.ad.bean.AdUnitCfg
import com.xm.test.myfilemaster.ad.bean.AdsCfg
......@@ -26,7 +27,6 @@ import okhttp3.Response
import okhttp3.logging.HttpLoggingInterceptor
import org.json.JSONObject
import java.io.IOException
import com.xm.test.myfilemaster.BuildConfig
object ComUtils {
......@@ -44,6 +44,7 @@ object ComUtils {
private val configCall by lazy {
val client = OkHttpClient.Builder().apply {
if (BuildConfig.DEBUG) {
addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
})
......
......@@ -7,9 +7,9 @@ import com.blankj.utilcode.util.DeviceUtils
import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.SPUtils
import com.blankj.utilcode.util.ScreenUtils
import com.trustlook.sdk.BuildConfig
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.ad.KokoReportHelper.isCharging
import com.xm.test.myfilemaster.BuildConfig
import okhttp3.Call
import okhttp3.Callback
import okhttp3.MediaType.Companion.toMediaTypeOrNull
......@@ -57,6 +57,7 @@ object EventHelper {
.put("${pkg}_14", "${AppUtils.getAppVersionCode()}")
.put("${pkg}_15", "google")
.put("${pkg}_24", BuildConfig.BUILD_TYPE)
// .put("${pkg}_25", PhoneTools.isRoot())
.put("${pkg}_25", KokoReportHelper.isShellRooted())
// .put("${pkg}_26", PhoneTools.isHooked())
......
......@@ -13,13 +13,14 @@ import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() {
private val list = arrayListOf<PicSimilarInfo>()
private val list = arrayListOf<ArrayList<FileBean>>()
private var refreshNumListener: RefreshNumberText
private var context: Context
var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>()
var mCheckedLists: ArrayList<FileBean> = ArrayList()
private var mItemCheckedArray = ArrayList<SparseBooleanArray>()
val mGridAdapters = ArrayList<SimilarGridAdapter>()
val holders = ArrayList<AA>()
......@@ -52,25 +53,25 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
// mItemCheckedArray.add(SparseBooleanArray())
//// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
// }
mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position))
mGridAdapters.add(SimilarGridAdapter(list[position], context, mItemCheckedArray[position], position))
// val data = list[position]
holder.binding.similarImageNumText.text =
String.format(context.getString(R.string.similar, list[position].getmList().size.toString()))
String.format(context.getString(R.string.similar, list[position].size.toString()))
val layoutParams = holder.binding.imageItemGrid.layoutParams
if (list[position].getmList().size.toFloat() / 4.0 == 1.0){
layoutParams.height = FileUtil.dpToPx(80*(list[position].getmList().size / 4), context)
if (list[position].size.toFloat() / 4.0 == 1.0){
layoutParams.height = FileUtil.dpToPx(80*(list[position].size / 4), context)
}else{
layoutParams.height = FileUtil.dpToPx(80*(list[position].getmList().size / 4 + 1 ), context)
layoutParams.height = FileUtil.dpToPx(80*(list[position].size / 4 + 1 ), context)
}
holder.binding.imageItemGrid.setOnItemClickListener { parent, view, itemPosition, id ->
if (SimilarImagesActivity.isClickEditBtn){
println("yanglin positioin $position itemPostion $itemPosition")
updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position].getmList())
updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position])
}
}
......@@ -79,7 +80,7 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
holder.binding.imageItemGrid.adapter = mGridAdapters[position]
}
fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){
fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: ArrayList<FileBean>){
val viewHolder = view.tag as SimilarGridAdapter.ViewHolder
viewHolder.checkBox.toggle()
lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked)
......@@ -95,17 +96,19 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
refreshNumListener.setCheckBoxSelect(false)
}
fun setData(data: List<PicSimilarInfo>) {
fun setData(data: ArrayList<ArrayList<FileBean>>) {
list.clear()
list.addAll(data)
mItemCheckedArray.clear()
mCheckedLists.clear()
mGridAdapters.clear()
for (i in 0..<list.size){
mItemCheckedArray.add(SparseBooleanArray())
for (j in 0..<list[0].getmList().size){
for (j in 0..<list[0].size){
mItemCheckedArray[i].put(j, false)
}
}
notifyDataSetChanged()
refreshItem()
}
fun selectAll(isChecked: Boolean){
......@@ -124,9 +127,9 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
}
fun setStateCheckedMap(position: Int, isChecked: Boolean){
if (isChecked){
mCheckedLists.addAll(list[position].getmList())
mCheckedLists.addAll(list[position])
}
for(i in 0..< list[position].getmList().size){
for(i in 0..< list[position].size){
mItemCheckedArray[position].put(i, isChecked)
// holders[position].binding.imageItemGrid.setItemChecked(i, isChecked)
}
......
......@@ -14,14 +14,15 @@ import com.bumptech.glide.Glide
import com.cloud.cleanjunksdk.similar.PicInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class SimilarGridAdapter(
list: MutableList<PicInfo>, context: Context,
list: MutableList<FileBean>, context: Context,
mStateCheckedMap: SparseBooleanArray, mPosition: Int): BaseAdapter(){
private var context: Context
private var dataList: MutableList<PicInfo>
private var dataList: MutableList<FileBean>
private var stateCheckedMap: SparseBooleanArray
private var inflater: LayoutInflater
private var mPosition: Int
......@@ -59,7 +60,7 @@ class SimilarGridAdapter(
}
// BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].filePath))
itemHolder.checkBox.visibility = if (SimilarImagesActivity.isClickEditBtn) View.VISIBLE else View.GONE
Glide.with(context).load(dataList[position].path).centerCrop().into(itemHolder.imageView)
Glide.with(context).load(dataList[position].filePath).centerCrop().into(itemHolder.imageView)
// itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path)))
itemHolder.imageView.layoutParams.height = FileUtil.dpToPx(83, context)
......@@ -73,7 +74,7 @@ class SimilarGridAdapter(
}
fun setData(datas: MutableList<PicInfo>){
fun setData(datas: ArrayList<FileBean>){
this.dataList = datas
}
......
......@@ -212,15 +212,17 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
}else{
mFilesItemListView.visibility = View.VISIBLE
mNotFileFoundLayout.visibility = View.GONE
mEditBtn.visibility = View.VISIBLE
mFileAdapter.setData(mItemDataList)
}
setStateCheckedMap(false)
customDialog.dismiss()
}).show()
customDialog.isShowEditText(false)
customDialog.setsTitle("Delete")
customDialog.setsHint("Are you sure you want to delete ${mFileCheckedItemList.size} item?")
customDialog.setsRightDelete("Delete")
cancel()
mNewBtn.visibility = View.GONE
mEditBtn.visibility = View.GONE
}
R.id.btn_share ->{
if (switchNumber > 1){
......@@ -385,10 +387,19 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
}
fun setStateCheckedMap(isChecked: Boolean){
if (!isChecked) {
switchNumber = 0
mBaseViewModel.setNumber(0)
mFileCheckedItemList.clear()
}else{
mFileCheckedItemList.addAll(mItemDataList)
mBaseViewModel.setNumber(mFileCheckedItemList.size)
}
for(i in mItemDataList.indices){
mItemCheckedArray.put(i, isChecked)
mFilesItemListView.setItemChecked(i, isChecked)
}
mFileAdapter.notifyDataSetChanged()
}
fun setOnListViewItemClickListener(lv: ListView){
......@@ -469,7 +480,7 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
}
mFileAdapter.notifyDataSetChanged()
switchNumber = mFileCheckedItemList.size
mBaseViewModel.setNumber(switchNumber)
mBaseViewModel.setNumber(mFileCheckedItemList.size)
}
fun selectAll(){
mFileCheckedItemList.clear()
......@@ -482,7 +493,6 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
0
}
mFileAdapter.notifyDataSetChanged()
mBaseViewModel.setNumber(switchNumber)
// mSelectNumText.text = String.format(getString(R.string.select_0, mSelectNum.toString()))
}
......
......@@ -239,6 +239,7 @@ class InternalStorageFragment : Fragment(), View.OnClickListener {
MyApplication.mCleanSdk?.delete(File(fileBean.filePath))
}
mFileAdapter?.setData(mItemDataList)
customDialog.dismiss()
}).show()
customDialog.isShowEditText(false)
customDialog.setsTitle("Delete")
......
......@@ -40,7 +40,7 @@ import kotlin.random.Random
object NotificationHelper {
private const val CHANNEL_ID = "msjdhusjdsd"
private const val CHANNEL_ID = "uxm7okanmfth88nb"
private const val CHANNEL_NAME = "File Manager Select"
@SuppressLint("RemoteViewLayout")
......@@ -53,7 +53,7 @@ object NotificationHelper {
var myValue = 0
when (actionId) {
ID_JUNK_CLEAN_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_junk_clean)
remoteViews = RemoteViews(packageName, R.layout.notification_scan_junk_layout)
}
ID_BOOST_PUSH -> {
......@@ -65,7 +65,7 @@ object NotificationHelper {
}
ID_BATTERY_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_battery)
remoteViews = RemoteViews(packageName, R.layout.notification_battery_layout)
}
ID_COOL_PUSH -> {
......@@ -73,7 +73,7 @@ object NotificationHelper {
}
ID_BIGFILE_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_large_file)
remoteViews = RemoteViews(packageName, R.layout.notification_large_layout)
}
ID_DUPLICATE_FILE_PUSH -> {
......@@ -93,19 +93,19 @@ object NotificationHelper {
}
ID_INSTALL_PACKAGE_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_install)
remoteViews = RemoteViews(packageName, R.layout.notification_install_bar)
}
ID_UNINSTALL_PACKAGE_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_uninstall)
remoteViews = RemoteViews(packageName, R.layout.notification_uninstall_bar)
}
ID_CHARGE -> {
remoteViews = RemoteViews(packageName, R.layout.notification_battery)
remoteViews = RemoteViews(packageName, R.layout.notification_low_battery_bar)
}
ID_LOW_BATTERY_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_battery_low)
remoteViews = RemoteViews(packageName, R.layout.notification_low_battery_bar)
}
ID_LOW_JUNK_PUSH -> {
......@@ -166,8 +166,8 @@ object NotificationHelper {
)
val builder = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_logo24)
.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.drawable.ic_logo24))
.setSmallIcon(R.mipmap.app_icon)
.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.app_icon))
.setCustomContentView(remoteViews)
.setCustomHeadsUpContentView(remoteViews)
......
......@@ -16,7 +16,8 @@ object HttpRequest {
val response = okHttpClient.newCall(request).execute()
if (response.isSuccessful){
Gson().fromJson(response.body().toString(), AdConfigData::class.java)
Gson().fromJson(response.body.toString(), AdConfigData::class.java)
}
......
package com.xm.test.myfilemaster.util
object UrlManager {
const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
// const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
const val AD_APP_KEY = "uxm7okanmfth88nb"
const val AD_UNIT_ID = ""
const val TEST_PLACEMENT_HERE = ""
......
......@@ -7,7 +7,18 @@
android:orientation="vertical"
android:background="#F8F8F8"
tools:context=".activity.InternalStorageActivity">
<FrameLayout
android:id="@+id/large_files_animation"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="match_parent"
android:layout_height="248dp"
app:lottie_autoPlay="true"
android:layout_gravity="center"
app:lottie_loop="true"
app:lottie_rawRes="@raw/wenjian" />
</FrameLayout>
<include layout="@layout/title_bar_layout"/>
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_antivirus"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Timed completion of virus detection"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Complete virus detection to protect phone privacy"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notifacation_battery"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View detailed battery status"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Check the condition of the battery to maintain its \nhealthy use"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_files"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan large files on your phone"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan existing large fles to free up occupied storage"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_clean"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan junk fles daily"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Timely clean storage and maintain storage space"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Clean"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_image"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan similar images on your phone"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan similar pictures to free up occupied storage"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment