Bla*_*aze 5 java redirect android
我正在开发一个Android应用程序,它通过HTML请求从服务器请求信息并获得一个params字符串作为回报.这在启动过程中发生,以便在第一次运行时配置应用程序.
要将请求发送到服务器,我从我的应用程序的主要活动的OnCreate方法中调用以下内容:
String URL = "http://myserver.mydomain.com/users/start";
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(URL));
startActivity(browserIntent);
Run Code Online (Sandbox Code Playgroud)
服务器(rails应用程序)获取所需的参数值,并使用以下语句重定向回应用程序:
redirect_to "http://myappname.mydomain.com/?#{mobile_params.to_query}"
Run Code Online (Sandbox Code Playgroud)
我在AndroidManifest.xml中创建了一个intent过滤器,用于处理从服务器返回的参数的活动.意图过滤器如下所示:
<activity
android:name=".StartFromUriActivity"
android:launchMode="singleTop"
android:noHistory="true"
android:screenOrientation="behind"
android:theme="@style/NoTitle"
android:exported="true" >
<intent-filter>
<data android:scheme="http" android:host="myappname.mydomain.com" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
最后,我的StartFromUriActivity.java的前几行如下所示:
public class StartFromUriActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri URIdata = getIntent().getData();
if(URIdata != null) {
parameter1value = URIdata.getQueryParameter("param1");
}
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
所有这一切实际上都运行正常,但有一个例外.该应用程序打开浏览器,将URI发送到服务器,服务器使用所需的参数值重定向回应用程序,意图过滤器指向活动并正确读取参数.唯一的问题是浏览器窗口留在前台,我必须手动关闭它.我已经尝试了一切我能想到的东西让我的应用程序到达前台,浏览器关闭或转到后台但没有成功.我错过了什么会导致我的应用程序正确地被带到前台?
我尝试了dsschnau的建议,即将android:allowTaskReparenting ="true"添加到AndroidManifest.xml中的活动中.这并没有解决问题,所以我尝试添加android:parentActivityName =".MainActivity"和android:taskAffinity ="myapp",以便重新拥有一个明确的目标,但仍然没有运气.
然后我意识到问题是StartFromUriActivity.OnCreate中的finish()语句结束了活动,它正确地返回到堆栈中的下一个活动,即浏览器.解决方法是在finish()语句之前添加以下行.
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4284 次 |
| 最近记录: |