feat: accessibility white list

This commit is contained in:
hyb1996 2018-02-04 10:34:55 +08:00
parent 5fed594bf1
commit 231b11c22b
2 changed files with 40 additions and 13 deletions

View File

@ -17,6 +17,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.qq.e.ads.ADActivity;
import com.qq.e.comm.DownloadService;
import com.stardust.app.FragmentPagerAdapterBuilder;
import com.stardust.app.OnActivityResultDelegate;
@ -27,7 +28,6 @@ import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.ui.common.NotAskAgainDialog;
import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.scriptdroid.ui.doc.DocsFragment_;
import com.stardust.scriptdroid.ui.floating.FloatyWindowManger;
import com.stardust.scriptdroid.storage.file.StorageFileProvider;
@ -55,7 +55,6 @@ import org.androidannotations.annotations.ViewById;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.io.File;
import java.util.Arrays;
@EActivity(R.layout.activity_main)
@ -236,6 +235,11 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
if (!BuildConfig.DEBUG && !DeveloperUtils.checkSignature(this)) {
finish();
}
if (!DeveloperUtils.isActivityRegistered(this, ADActivity.class) ||
!DeveloperUtils.isServiceRegistered(this, DownloadService.class)) {
finish();
}
}

View File

@ -1,12 +1,19 @@
package com.stardust.util;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.Signature;
import android.support.annotation.Nullable;
import android.util.Base64;
import com.stardust.BuildConfig;
import java.security.MessageDigest;
import java.util.List;
/**
* Created by Stardust on 2017/4/5.
@ -15,11 +22,7 @@ import com.stardust.BuildConfig;
public class DeveloperUtils {
private static final String PACKAGE_NAME = "com.stardust.scriptdroid";
private static final String SIGNATURE = "3082037130820259a003020102020428425adc300d06092a864886f70d01010b05003068310b300906035504061302434e310f300d06035504080c06e5b9bfe4b89c310f300d06035504070c06e5b9bfe5b79e31123010060355040a0c09444b52e4b8aae4baba310c300a060355040b1303444b523115301306035504030c0ce6989fe5b098e5b9bbe5bdb13020170d3135313031303039353533365a180f32303730303731333039353533365a3068310b300906035504061302434e310f300d06035504080c06e5b9bfe4b89c310f300d06035504070c06e5b9bfe5b79e31123010060355040a0c09444b52e4b8aae4baba310c300a060355040b1303444b523115301306035504030c0ce6989fe5b098e5b9bbe5bdb130820122300d06092a864886f70d01010105000382010f003082010a0282010100d4377c8e7f711408c6136e6a25b1b3d0cc7dc2ebfd633a623bd24649b4d74b702a1792e298bd2e495b0b72226f06b9bd9078d1707fc2997e6732f5d253b3c318b1ca52a7fe82eb1045825ff2f85386701e9b4837ad77cdacb8e269d41fc52077dd6a2b6cfac70d3e5b5cae90880983d09bb2f09ec5e415c07a73ec0331aec0fe7ca9ea3de4ced22e3c0a94d4b0ae89bcf7bb73e3861897afad3099f5f9098c324d80e46cda00641fdb78cd451f3615553365b75835618b34cc27385f3a5c503185d2972d2efaba384e3bba1c9e353ea8ce898a34df76697253cdb0fb80866c6b2b04ab3b0ab3211789ace0d9b456854a549ce24c36ca30d73943a4dc111adbc90203010001a321301f301d0603551d0e04160414e8b844190be53497ca213ae3a81e2ce7883a0b21300d06092a864886f70d01010b050003820101007f9d7bfed50a22cdebec1134d82a23f33be739e5dd61fe4a84e1065230397ba02dde126aadcd0bb0dca22b7c3a396aae0f8ca1945c5b27d2ccea9b509a99a9d7f2fe7ba82118e851794134f0a13d53e2203e77f2e1a7e2ed0d732419d24902c30a75d556fa65aae6b137a3a2c48b732a30f906e446ec8a54e6f6f914a5fe8e33f0219635b3ad4b9d3b76e1c38b19030f12e0f110aac1a9335f542bbe49705f01f0082f8840be09d85514fdb92f08a4abe3811492323cec5b80cb3edc62e3ec44d426eff2adff817cfc37022e113d9cce442ecb95e343563eb081380631f9f0a6925dc1b717049160e4dfc4400d477dceaccfc8f2a7b73616619c9a802eb47ebd";
public static String selfPackage() {
return PACKAGE_NAME;
}
private static final String SIGNATURE = "nPNPcy4Lk/eP6fLvZitP0VPbHdFCbKua77m59vis5fA=";
public static void ensureRunningPackageNotSelf(@Nullable String runningPackage) {
if (PACKAGE_NAME.equals(runningPackage)) {
@ -32,16 +35,20 @@ public class DeveloperUtils {
}
@Nullable
public static String getSignature(Context context, String packageName) {
public static String getSignatureSHA(Context context, String packageName) {
try {
@SuppressLint("PackageManagerGetSignatures")
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
Signature[] signatures = packageInfo.signatures;
StringBuilder builder = new StringBuilder();
for (Signature signature : signatures) {
builder.append(signature.toCharsString());
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(signature.toByteArray());
final String sha = Base64.encodeToString(md.digest(), Base64.DEFAULT);
builder.append(sha);
}
return builder.toString();
} catch (PackageManager.NameNotFoundException e) {
} catch (Exception e) {
e.printStackTrace();
}
return null;
@ -52,12 +59,28 @@ public class DeveloperUtils {
* 为了开源社区的发展请善用源码:-)
*/
public static boolean checkSignature(Context context) {
return SIGNATURE.equals(getSignature(context, context.getPackageName()));
return SIGNATURE.equals(getSignatureSHA(context, context.getPackageName()));
}
public static boolean checkSignature(Context context, String packageName) {
return SIGNATURE.equals(getSignature(context, packageName));
return SIGNATURE.equals(getSignatureSHA(context, packageName));
}
public static String selfPackage() {
return PACKAGE_NAME;
}
public static boolean isActivityRegistered(Context context, Class<? extends Activity> c) {
List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(new Intent(context, c),
PackageManager.MATCH_DEFAULT_ONLY);
return list != null && list.size() > 0;
}
public static boolean isServiceRegistered(Context context, Class<? extends Service> c) {
List<ResolveInfo> list = context.getPackageManager().queryIntentServices(new Intent(context, c),
PackageManager.MATCH_DEFAULT_ONLY);
return list != null && list.size() > 0;
}
}