package me.ele.app.amigo; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.support.annotation.Nullable; import android.util.Log; import android.view.View; import android.widget.Toast; import java.lang.reflect.Method; import me.ele.amigo.reflect.MethodUtils; /** * Created by wwm on 9/30/16. */ public class TestPatchedServices extends BaseActivity { private static final String TAG = "TestPatchedServices"; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_patched_services); } public void startNewService(View view) { try { startService(new Intent().setClassName(this, "me.ele.demo.service.StartService") .putExtra("StartService", "1")); } catch (Exception e) { e.printStackTrace(); } } public void stopNewService(View view) { try { stopService(new Intent().setClassName(this, "me.ele.demo.service.StartService")); } catch (Exception e) { e.printStackTrace(); } } private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.e(TAG, "onServiceConnected"); try { Class LocalBinderClazz = Class.forName("me.ele.demo.service" + ".BindService$LocalBinder"); Object binder = service; Method getServiceMethod = LocalBinderClazz.getDeclaredMethod("getService"); Object s = getServiceMethod.invoke(binder); Log.e(TAG, "random number from service" + MethodUtils.invokeMethod(s, "getRandomNumber")); } catch (Exception e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { Log.e(TAG, "onServiceConnected"); } }; public void bindNewService(View view) { try { bindService(new Intent().setClassName(this, "me.ele.demo.service.BindService") .putExtra("BindService", "1"), connection, 0); } catch (Exception e) { e.printStackTrace(); } } public void unbindNewService(View view) { try { unbindService(connection); } catch (IllegalArgumentException e) { Toast.makeText(this, "Service not registered", Toast.LENGTH_SHORT).show(); } } }