打开设置中的自启动设置页面
adb一下看是哪个页面
直接在Android studio 的Device File Explorer中找到该应用,在system-app-PermissionManager中找到
直接拿出来使用jadx打开
自启动页面的应用列表肯定需要adapter,所以直接找adapter
可以看到初始化传入了三个值,而第三个就是list数据,直接找它的数据是怎么来的
最终获取数据是执行的com.vivo.permissionmanager.utils.C0536aq.m1102a
那我们把代码整理执行一下
和手机自启动页面的应用是一致的,但这一步只是获取了需要自启动的应用包名,下一步就需要获取打开了的应用。继续查看调用后的代码
可以看到进行了遍历,所以主要分析所有调用了L_0x0051的位置,很容易找到该位置
代码简化后得到
public static void getPackageStartupInfo(Context context, String packageName){
StringBuilder uriString = new StringBuilder();
uriString.append("content://com.vivo.permissionmanager.provider.permission");
uriString.append(File.separator);
uriString.append("bg_start_up_apps");
android.net.Uri uri =Uri.parse(uriString.toString());
java.lang.String[] projection = new java.lang.String[]{"_id", "pkgname", "pkguid", "setbyuser", "currentstate"};
java.lang.String[] Args = new java.lang.String[]{packageName};
android.database.Cursor cursor = context.getContentResolver().query(
uri, projection, "pkgname=?", Args, null);
if (cursor.moveToFirst()) {
for (String columnName : cursor.getColumnNames()) {
int index= cursor.getColumnIndex(columnName);
Log.d(TAG, "getPackageStartupInfo: ="+columnName+"="+cursor.getString(index));
}
}
cursor.close();
}
执行一下,获取支付宝的信息
在自启动中允许支付宝自启动,再次执行
可见状态值为0代表允许自启,为1代表不允许自启
至此分析结束