|
|
|
|
package org.purplei2p.i2pd;
|
|
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
|
|
import android.content.ComponentName;
|
|
|
|
|
import android.content.Intent;
|
|
|
|
|
import android.content.pm.PackageManager;
|
|
|
|
|
import android.content.pm.ResolveInfo;
|
|
|
|
|
import android.net.Uri;
|
|
|
|
|
import android.os.Build;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.provider.Settings;
|
|
|
|
|
import android.util.Log;
|
|
|
|
|
import android.view.MenuItem;
|
|
|
|
|
import android.view.View;
|
|
|
|
|
import android.widget.Button;
|
|
|
|
|
import android.widget.CompoundButton;
|
|
|
|
|
import android.widget.Switch;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//import org.purplei2p.i2pd.iniedotr.IniEditor;
|
|
|
|
|
|
|
|
|
|
public class SettingsActivity extends Activity {
|
|
|
|
|
private String TAG = "i2pdSrvcSettings";
|
|
|
|
|
private File cacheDir;
|
|
|
|
|
public static String onBootFileName = "/onBoot"; // just file, empty, if exist the do autostart, if not then no.
|
|
|
|
|
|
|
|
|
|
//https://gist.github.com/chandruark/3165a5ee3452f2b9ec7736cf1b4c5ea6
|
|
|
|
|
private void addAutoStartupSwitch() {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
Intent intent = new Intent();
|
|
|
|
|
String manufacturer = android.os.Build.MANUFACTURER .toLowerCase();
|
|
|
|
|
|
|
|
|
|
switch (manufacturer){
|
|
|
|
|
case "xiaomi":
|
|
|
|
|
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
|
|
|
|
|
break;
|
|
|
|
|
case "oppo":
|
|
|
|
|
intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
|
|
|
|
|
break;
|
|
|
|
|
case "vivo":
|
|
|
|
|
intent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
|
|
|
|
|
break;
|
|
|
|
|
case "Letv":
|
|
|
|
|
intent.setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity"));
|
|
|
|
|
break;
|
|
|
|
|
case "Honor":
|
|
|
|
|
intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
|
|
|
|
|
break;
|
|
|
|
|
case "oneplus":
|
|
|
|
|
intent.setComponent(new ComponentName("com.oneplus.security", "com.oneplus.security.chainlaunch.view.ChainLaunchAppListActivity"));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
|
|
|
|
|
if (list.size() > 0) {
|
|
|
|
|
startActivity(intent);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
Log.e("exceptionAutostarti2pd" , String.valueOf(e));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//@Override
|
|
|
|
|
private void requestPermission() {
|
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
|
|
|
if (!Settings.canDrawOverlays(this)) {
|
|
|
|
|
Intent intent = new Intent(
|
|
|
|
|
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
|
|
|
|
Uri.parse("package:" + getPackageName())
|
|
|
|
|
);
|
|
|
|
|
startActivityForResult(intent, 232);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
Log.d(TAG, "onCreate");
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
setContentView(R.layout.activity_settings);
|
|
|
|
|
Objects.requireNonNull(getActionBar()).setDisplayHomeAsUpEnabled(true);
|
|
|
|
|
Switch autostart_switch = findViewById(R.id.autostart_enable);
|
|
|
|
|
Button openPreferences = findViewById(R.id.OpenPreferences);
|
|
|
|
|
cacheDir = getApplicationContext().getCacheDir();
|
|
|
|
|
File onBoot = new File(cacheDir.getAbsolutePath() + onBootFileName);
|
|
|
|
|
openPreferences.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View view) {
|
|
|
|
|
Intent intent = new Intent(SettingsActivity.this, MainPreferenceActivity.class);
|
|
|
|
|
startActivity(intent);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
autostart_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
|
|
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
|
|
|
// do something, the isChecked will be
|
|
|
|
|
// true if the switch is in the On position
|
|
|
|
|
if (isChecked) {
|
|
|
|
|
if (!onBoot.exists()) {
|
|
|
|
|
requestPermission();
|
|
|
|
|
addAutoStartupSwitch();
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (!onBoot.createNewFile())
|
|
|
|
|
Log.d(TAG, "Cant create new wile on: "+onBoot.getAbsolutePath());
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
Log.e(TAG, "error: " + e.toString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (onBoot.exists())
|
|
|
|
|
onBoot.delete();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if(onBoot.exists())
|
|
|
|
|
autostart_switch.setChecked(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
|
int id = item.getItemId();
|
|
|
|
|
|
|
|
|
|
if (id == android.R.id.home) {
|
|
|
|
|
finish();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|