Один из моего приложения вид внутри моего второго приложения в Android
Я застрял в проблеме, где я должен показать свое первое приложение в некоторой области экрана второго приложения. Оба кода находятся под моим контролем. Может ли кто-нибудь подсказать мне, куда мне действовать, так как я не имею ни малейшего представления о ситуации.
если кто-то поможет мне в этом вопросе, это будет очень полезно для меня.
Или же
Если я могу открыть оба моих приложения, используя опцию многоэкранного режима, доступную в S3.
1 ответ
Напишите услугу либо по вашей заявке, либо по отдельной заявке. Определите AIDL(язык определения интерфейса Android) как IRemoteService.aidl, ниже приведен мой псевдокод или пример реализации. Используя этот подход, вы можете запускать действия и обрабатывать события другого приложения через ваше приложение.
// IRemoteService.aidl
// Declare any non-default types here with import statements
/** Example service interface */
interface IAccountService {
String getLoggedInUserInfo(String appId);
void userLogin(String appId,ILoginCallback cb);
void signout(String appId);
}
interface ILoginCallback {
void loginSuccess(String userId);
void loginFailed();
}
В вашем сервисе есть несколько RemoteCallbacks
@Override
public IBinder onBind(Intent intent) {
final RemoteCallbackList<ILoginCallback> mCallbacks = new RemoteCallbackList<ILoginCallback>();
if(mCallbacks!=null){
int i = mCallbacks.beginBroadcast();
while(i>0){
i--;
try {
Log.e(TAG, "Callback ...");
mCallbacks.getBroadcastItem(i).loginSuccess(newUserId);
} catch (RemoteException e) {
// The RemoteCallbackList will take care of removing
// the dead object for us.
}
}
mCallbacks.finishBroadcast();
}
}
private final IAccountService.Stub mBinder = new IAccountService.Stub() {
@Override
public void userLogin(String appId,ILoginCallback cb) throws RemoteException {
String userId = Settings.getSettings().getUserId();
if(userId ==null||userId.length()==0){
mCallbacks.register(cb);
Intent intent = new Intent(getApplicationContext(), AccountLoginActivity.class);
intent.putExtra("deviceId", Settings.getSettings().getDeviceUniqueId());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
}
Вы можете найти подробные примеры AIDL в ссылках ниже.