0
我的應用需求Android的活動,並與短信contentobserver
服務的應用程序將有一個活動和服務。
該服務有一個短信內容觀看者。
應用程序安裝後,服務應該運行
註冊和服務內contentobserver的註銷應 從活動控制的所有不論 應用的活性或沒有時間。
在卸載應用程序時應該銷燬服務。
我試了一些代碼。在服務的創建上,我完成了內容觀察員 的resgitartion和ondestroy我未註冊它。我使用了該活動的啓動和停止服務。 但即使在停止服務後,內容觀察者的onchange方法仍然被調用。
請讓我知道一些示例代碼和此服務的清單定義。
public class MyActivity extends ListActivity implements OnInitListener {
@Override
protected void onDestroy() {
super.onDestroy(); // let it be here as per the android TTS samples
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent sintent = new Intent(MyActivity.this,MyService.class);
MyActivity.this.startService(sintent);
}
private boolean SSMyservice() {
// TODO Auto-generated method stub
//stop service
Intent sintent = new Intent(MyActivity.this,MyService.class);
MyActivity.this.stopService(sintent);
//do some work
//start service again
MyActivity.this.startService(sintent); //start service again
return true;
} //importdata
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.TTSread:
return true;
case R.id.SSS:
SSMyservice();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Log.v(TAG,"option menu created");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.omenu, menu);
return true;
}
}
------------end MyActivity---------------------
----------------------------------
public class MyService extends Service {
protected SmsObserver smsSentObserver=null;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate()
{
registersmsevent();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
super.onStartCommand(intent, flags, startId);
return Service.START_STICKY;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregistersmsevent();
}
public void registersmsevent() {
// TODO Auto-generated method stub
if(smsSentObserver == null)
{
final Uri SMS_STATUS_URI = Uri.parse("content://sms");
smsSentObserver = new SmsObserver(new Handler());
MyService.this.getContentResolver().registerContentObserver(SMS_STATUS_URI, true, smsSentObserver);
}
}
public void unregistersmsevent() {
if(smsSentObserver != null)
{
MyService.this.getContentResolver().unregisterContentObserver(smsSentObserver);
smsSentObserver = null;
}
}
public class SmsObserver extends ContentObserver {
Handler handler;
public SmsObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
this.handler = handler;
}
@Override
public boolean deliverSelfNotifications() {
return true;
}
@Override
public void onChange(boolean selfChange) {
//my code........
super.onChange(selfChange);
}
}//End of class SmsObserver
}//end of service
顯示您在活動中停止服務的郵編。 –
gtw什麼是短信內容觀看者是一個實際的類型?我認爲你聽聽意圖接收者的意圖。 –
意圖發送短信不會'工作。所以我使用的是Contentobserver。我粘貼了我的代碼。 – user1123931