Skip to content

Commit

Permalink
1.若搜索框为打开状态,点击列表时会收起
Browse files Browse the repository at this point in the history
2.增加启动图
3.申请了读写文件权限
  • Loading branch information
wukaicheng committed May 24, 2021
1 parent 551a16e commit b18f05a
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,9 @@
import android.app.Activity;
import android.os.Bundle;
import android.os.Process;
import android.util.Log;

import androidx.annotation.Nullable;

import top.niunaijun.blackbox.app.BActivityThread;
import top.niunaijun.blackbox.fake.hook.HookManager;
import top.niunaijun.blackbox.fake.service.HCallbackProxy;
import top.niunaijun.blackbox.proxy.record.ProxyActivityRecord;

/**
* Created by Milk on 3/28/21.
* * ∧_∧
Expand All @@ -29,6 +23,12 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
finish();
}

@Override
protected void onDestroy() {
super.onDestroy();
Process.killProcess(Process.myPid());
}

public static class P0 extends ProxyActivity {

}
Expand Down Expand Up @@ -428,4 +428,5 @@ public static class P98 extends ProxyActivity {
public static class P99 extends ProxyActivity {

}

}
6 changes: 4 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name="top.niunaijun.blackdex.App"
android:name=".App"
android:supportsRtl="true"
android:theme="@style/Theme.BlackDex">
<activity android:name="top.niunaijun.blackdex.view.main.MainActivity">
<activity android:name=".view.base.WelcomeActivity"
android:theme="@style/WelcomeTheme"/>
<activity android:name=".view.main.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package top.niunaijun.blackdex.view.base

import android.content.Intent
import android.os.Bundle
import top.niunaijun.blackdex.view.main.MainActivity

/**
*
* @Description:
* @Author: wukaicheng
* @CreateDate: 2021/5/24 21:49
*/
class WelcomeActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}
}
115 changes: 98 additions & 17 deletions app/src/main/java/top/niunaijun/blackdex/view/main/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
package top.niunaijun.blackdex.view.main

import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.view.Menu
import android.view.MenuItem
import android.view.inputmethod.InputMethodManager
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.afollestad.materialdialogs.MaterialDialog
Expand All @@ -14,6 +20,7 @@ import com.roger.catloadinglibrary.CatLoadingView
import top.niunaijun.blackbox.BlackDexCore
import top.niunaijun.blackbox.core.system.dump.IBDumpMonitor
import top.niunaijun.blackbox.entity.dump.DumpResult
import top.niunaijun.blackbox.utils.compat.BuildCompat
import top.niunaijun.blackdex.R
import top.niunaijun.blackdex.data.entity.AppInfo
import top.niunaijun.blackdex.data.entity.DumpInfo
Expand Down Expand Up @@ -48,6 +55,7 @@ class MainActivity : BaseActivity() {
initSearchView()

BlackDexCore.get().registerDumpMonitor(mMonitor)

}

private fun initView() {
Expand All @@ -56,6 +64,11 @@ class MainActivity : BaseActivity() {
viewBinding.recyclerView.layoutManager = LinearLayoutManager(this)

mAdapter.setOnItemClick { _, _, data ->
if (viewBinding.searchView.isSearchOpen) {
viewBinding.searchView.closeSearch()
filterApp("")
}
hideKeyboard()
viewModel.startDexDump(data.packageName)
}

Expand All @@ -65,10 +78,10 @@ class MainActivity : BaseActivity() {
}

private fun initViewModel() {
viewModel = ViewModelProvider(this, InjectionUtil.getMainFactory()).get(MainViewModel::class.java)
viewModel.getAppList()

viewModel =
ViewModelProvider(this, InjectionUtil.getMainFactory()).get(MainViewModel::class.java)
viewBinding.stateView.showLoading()
viewModel.getAppList()

viewModel.mAppListLiveData.observe(this) {
it?.let {
Expand All @@ -94,8 +107,11 @@ class MainActivity : BaseActivity() {
MaterialDialog(this).show {
title(text = "脱壳失败")
message(text = "未知错误,可前往GitHub(https://github.com/CodingGay/BlackDex)提Issue")
negativeButton(text = "Github"){
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/CodingGay/BlackDex/issues"))
negativeButton(text = "Github") {
val intent = Intent(
Intent.ACTION_VIEW,
Uri.parse("https://github.com/CodingGay/BlackDex/issues")
)
startActivity(intent)
}
positiveButton(text = "确定")
Expand All @@ -122,14 +138,24 @@ class MainActivity : BaseActivity() {
}
}

private val mMonitor = object: IBDumpMonitor.Stub(){
private val mMonitor = object : IBDumpMonitor.Stub() {
override fun onDump(result: DumpResult?) {
result?.let {
if(result.success){
viewModel.mDexDumpLiveData.postValue(DumpInfo(DumpInfo.SUCCESS,"DEX文件储存在:${result.dir}"))
}else{
if (result.success) {
viewModel.mDexDumpLiveData.postValue(
DumpInfo(
DumpInfo.SUCCESS,
"DEX文件储存在:${result.dir}"
)
)
} else {

viewModel.mDexDumpLiveData.postValue(DumpInfo(DumpInfo.FAIL,"错误原因:${result.msg}"))
viewModel.mDexDumpLiveData.postValue(
DumpInfo(
DumpInfo.FAIL,
"错误原因:${result.msg}"
)
)
}
}
}
Expand All @@ -138,7 +164,8 @@ class MainActivity : BaseActivity() {


private fun initSearchView() {
viewBinding.searchView.setOnQueryTextListener(object : SimpleSearchView.OnQueryTextListener {
viewBinding.searchView.setOnQueryTextListener(object :
SimpleSearchView.OnQueryTextListener {
override fun onQueryTextChange(newText: String): Boolean {
filterApp(newText)
return true
Expand Down Expand Up @@ -171,17 +198,70 @@ class MainActivity : BaseActivity() {
LoadingUtil.showLoading(loadingView, supportFragmentManager)
}

private fun hideKeyboard() {
val imm: InputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
window.peekDecorView()?.run {
imm.hideSoftInputFromWindow(windowToken, 0)
}
}

private val openDocumentedResult = registerForActivityResult(ActivityResultContracts.GetContent()) {
it?.run {
viewModel.startDexDump(it.toString())
private fun requestStoragePermission() {
if (BuildCompat.isM() && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) {
requestPermissionLauncher.launch(Manifest.permission.WRITE_EXTERNAL_STORAGE)
}
}

private val openDocumentedResult =
registerForActivityResult(ActivityResultContracts.GetContent()) {
it?.run {
viewModel.startDexDump(it.toString())
}
}

@RequiresApi(Build.VERSION_CODES.M)
private val requestPermissionLauncher =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
if (!it) {
MaterialDialog(this).show {
title(text = "申请失败")
message(text = "请授予我们读写本地文件权限,否则软件将无法正常运行。")

if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {

positiveButton(text = "再次申请") {
requestStoragePermission()
}

} else {

positiveButton(text = "手动授予") {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri = Uri.fromParts("package", packageName, null)
intent.data = uri
try {
startActivity(intent)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
negativeButton(text = "退出软件") {
finish()
}
}
}
}


override fun onStart() {
super.onStart()
requestStoragePermission()
}

override fun onBackPressed() {
if (viewBinding.searchView.isSearchOpen) {
viewBinding.searchView.closeSearch()
filterApp("")
} else {
super.onBackPressed()
}
Expand All @@ -198,9 +278,10 @@ class MainActivity : BaseActivity() {


override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.main_git->{
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/CodingGay/BlackDex"))
when (item.itemId) {
R.id.main_git -> {
val intent =
Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/CodingGay/BlackDex"))
startActivity(intent)
}
}
Expand Down

0 comments on commit b18f05a

Please sign in to comment.