我正在开发两个安卓应用程序:
- 第一个是带有启动器的普通应用程序,依此类推
另一个是仅具有查看器活动的应用程序(请参阅清单):
<activity android:name=".MyActivity" android:icon="@drawable/icon" android:label="@string/dropbox" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.dropbox.client2.android.AuthActivity" android:configChanges="orientation|keyboard" android:launchMode="singleTask" > <intent-filter> <data android:scheme="db-XXXXX" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
计划是,第一个应用程序不需要互联网权限,第二个是第一个应用程序的某种附加组件。
第二个应用程序应该与 Dropbox 同步文件(使用 Core API,而不是使用 Sync API)。
从我的第一个应用程序开始,我从第二个应用程序开始“MyActivity”,如下所示:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setComponent(new ComponentName("my.package","my.package.MyActivity"));
intent.putExtra("filePath", "/myFile.txt");
startActivityForResult(intent, SYNC_REQUEST);
这样可行。活动出现在那里,如果尚未授权,用户必须按下按钮。然后会执行下面的代码
AndroidAuthSession session = buildSession();
mApi = new DropboxAPI<AndroidAuthSession>(session);
mApi.getSession().startAuthentication(MyActivity.this);
如果用户没有安装 Dropbox,浏览器会弹出。
现在我的麻烦开始了:
只要用户按下“接受”或“拒绝”,浏览器就不会消失。它保持打开状态并且 MyActivity 不会恢复(不会调用 onResume!)。
我发现,添加
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
在从我的第一个应用程序启动 MyActivity 之前会解决问题,但是我不能听/等待 MyActivity 的结果。
我烦了。任何人都可以帮助我或给我一些建议吗?
谢谢!