我遇到了需要将第一个应用程序显示在第二个应用程序屏幕的某个区域的问题。这两个代码都在我的控制之下。任何人都可以建议我在哪里继续进行,因为我对这种情况没有任何线索。
如果有人帮我解决这个问题,那对我来说将是一个很大的帮助。
或者
如果我可以使用S3中提供的多屏幕选项打开我的两个应用程序。
答案 0 :(得分:0)
在您的应用程序或单个应用程序上编写服务。将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示例。