android 實現一個app啟動另一個app的service服務
阿新 • • 發佈:2019-02-06
首先我們建立兩個android 工程 這裡我們稱被啟動的app為甲,啟動被啟動的app為已,首先我們在甲 app類中new一個Myservice類 在類的onCreate函式中我們寫一個匿名執行緒
public class MyService extends Service {
private boolean Runing=false;
private String Data=null;
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
super.onCreate();
Runing =true ;
new Thread(){
@Override
public void run() {
super.run();
while(Runing)
{
System.out.println(Data);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
@Override
public void onDestroy() {
super.onDestroy();
Runing =false;
}
}
寫完之後 我們把這個app 啟動 安裝到手機上面
然後我們開啟乙app
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editText; @Override
Intent intent = new Intent();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_startAnotherApp).setOnClickListener(this);
findViewById(R.id.btn_stopAnotherApp).setOnClickListener(this);
intent.setComponent(new ComponentName("com.example.blue.anotherapp","com.example.blue.anotherapp.MyService"));//設定一個元件名稱 同組件名來啟動所需要啟動Service
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.btn_startAnotherApp:
startService(intent);
break;
case R.id.btn_stopAnotherApp :
stopService(intent);
break;
}
}
}
在這裡我們聲明瞭一個intent 這個指明瞭一個元件大家都知道啟動一個Service可以用intent 這裡我們宣告的intent可以指明我們要啟動的app 這裡宣告的第一個字串為 app 甲的包名地址 第二個為甲app中的Service類的地址
當我們啟動時就點選啟動按鈕 甲app就會不斷的輸出了