Mở hoạt động trong suốt từ dịch vụ và sử dụng BroadcastReceiver trong dịch vụ. Thực hiện theo các bước chi tiết.
1. mở hoạt động suốt từ Dịch vụ
Intent i = new Intent(mContext, FloatingServiceSupportActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("action", "SpeechRegnition");
mContext.startActivity(i);
// Để sử dụng hoạt động minh bạch mã này trong AndroidManifest.xml
<activity
android:name=".FloatingServiceSupportActivity"
android:theme="@style/Theme.Transparent" />
2. Tạo BroadcastReceiver trong Dịch vụ
BroadcastReceiver brOnActivityResult = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO:
}
};
3. Đăng ký chương trình phát sóng này trên onCreate of Service
IntentFilter brintent = new IntentFilter();
brintent.addAction("brActionFloatingServiceOnActivityResult");
mContext.registerReceiver(brOnActivityResult, brintent);
4. Unregister phát sóng này trong onDestroy of Service
mContext.unregisterReceiver(brOnActivityResult);
5. Làm công việc trong hoạt động bằng cách sử dụng startActivityForResult và Gửi phát sóng từ Hoạt động của (FloatingServiceSupportActivity) onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Intent i = new Intent();
i.setAction("brActionFloatingServiceOnActivityResult");
i.putExtra("action", "initTextToSpeech");
mActivity.sendBroadcast(i);
mActivity.finish();
}
Nguồn
2016-11-01 08:25:14
tôi đã không cố gắng và tôi chưa bao giờ cố gắng sử dụng onAtcivityResult trong một lớp không hoạt động ngay bây giờ ... – user1839514