【问题标题】:Calling startActivity() from outside of an Activity context error从 Activity 上下文错误之外调用 startActivity()
【发布时间】:2020-06-26 12:20:24
【问题描述】:

我正在使用位置 api 构建应用程序,当用户单击按钮时,我想获取当前活动的路线,以便我可以继续执行任务。 这是我得到的错误。 从 Activity 上下文外部调用 startActivity() 需要
FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?

我知道我们可以使用addFlags(Intent.FLAG_ACTIVITY_NEW_TASK 来解决该错误。但问题是我只希望该意图的结果显示在当前活动上。

示例代码。按钮点击

   public void getDirections() {
        if (mState.getOrder() != null) {
            Uri gmmIntentUri;
            if (Order.PICKING_UP.equals(mState.getOrder().status)) {
                gmmIntentUri = Uri.parse("google.navigation:q="
                        + mState.getOrder().pickup.latitude + "," + mState.getOrder().pickup.longitude);
            } else {
                gmmIntentUri = Uri.parse("google.navigation:q="
                        + mState.getOrder().dropoff.latitude + "," + mState.getOrder().dropoff.longitude);
            }
            Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
            mapIntent.setPackage("com.google.android.apps.maps");
            //mapIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // done to resolve Calling startActivity() from outside of an Activity context issue
            mContext.startActivity(mapIntent);
        }
    }
// context 
mContext = context.getApplicationContext() == null ? context : context.getApplicationContext();

【问题讨论】:

标签: android geolocation location


【解决方案1】:

如果你想从 Intent 对象中获取数据,你应该使用 startActivityForResult 方法。

      Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
        mapIntent.setPackage("com.google.android.apps.maps");
        //mapIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // done to resolve Calling startActivity() from outside of an Activity context issue
        mContext.startActivityForResult(mapIntent);

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 2019-07-17
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多