package com.jacky.compatible.launcher.features.app; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import com.jacky.launcher.R; import com.jacky.compatible.launcher.adapter.AppAutoRunAdapter; import com.jacky.compatible.launcher.model.AppBean; import java.io.DataOutputStream; import java.io.IOException; import java.util.List; /** * 应用开机自启动管理 * @author jacky * @version 1.0 * @since 2016.4.5 */ public class AppAutoRun extends Activity implements View.OnClickListener { private ListView listView; private AppAutoRunAdapter adapter; private List<AppBean> mAppList; private Context context; private boolean first = true; private boolean clickFlag; private int clickPosition; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.app_auto_run); context = this; init(); } private void init() { listView = (ListView) findViewById(R.id.app_auto_run_lv); AppDataManage getAppInstance = new AppDataManage(context); mAppList = getAppInstance.getAutoRunAppList(); adapter = new AppAutoRunAdapter(context, mAppList); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ImageView flag = (ImageView) view.findViewById(R.id.item_app_auto_run_flag); if (first) { first = false; clickPosition = position; boolean b = manageBoot(mAppList.get(position).getPackageName(), false); flag.setBackgroundResource(R.drawable.switch_off); clickFlag = true; } else { if (clickPosition == position) { if (clickFlag) { boolean b = manageBoot(mAppList.get(position).getPackageName(), true); flag.setBackgroundResource(R.drawable.switch_on); } else { flag.setBackgroundResource(R.drawable.switch_off); boolean b = manageBoot(mAppList.get(position).getPackageName(), false); } clickFlag = !clickFlag; } else { clickFlag = true; clickPosition = position; flag.setBackgroundResource(R.drawable.switch_off); boolean b = manageBoot(mAppList.get(position).getPackageName(), false); } } } }); } public boolean manageBoot(String pkg, boolean able) { Process process = null; DataOutputStream dos = null; String command = null; try { process = Runtime.getRuntime().exec("su"); dos = new DataOutputStream(process.getOutputStream()); dos.flush(); command = "export LD_LIBRARY_PATH=/vendor/lib:/system/lib \n"; dos.writeBytes(command); if (able) { command = "pm enable " + pkg; } else { command = "pm disable " + pkg; } dos.writeBytes(command); dos.writeBytes("exit " + "\n"); dos.flush(); try { process.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } int exitValue = process.exitValue(); try { if (exitValue == 0) { return true; } else { return false; } } catch (Exception e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } finally { if (dos != null) { try { dos.close(); } catch (IOException e) { e.printStackTrace(); } } if (process != null) { process.destroy(); } } return false; } @Override public void onClick(View v) { } }