如何从两个不同的UI使用不同的图标打开主要活动

问题描述:

我有一个主要活动包括地图的应用程序。 我想在我的主屏幕启动器上创建两个图标,它们都会打开相同的主要活动,但在地图上使用不同的用户界面。如何从两个不同的UI使用不同的图标打开主要活动

例如: 如果我按下图标A,应用程序将在地图上打开一个晶圆厂,如果我按下图标B,应用程序将在地图上没有晶圆厂的情况下打开。

+0

只是处理的Fab的可见性消失了,可见不同的图标按或你可以在一个活动的两个碎片,并推出根据您的图标上按需要 –

+0

尝试检查了这一点https://developer.android.com/guide/topics/ui/shortcuts.html似乎是你想要的,但它是最新版本,我认为 – Cruces

+0

我不知道这是否工作,但这也似乎是你需要什么https://*.com/questions/43361498/android-quick-shortcuts-passing-intent-extraor-some-data-in-shortcutsx毫升 – Cruces

首先你需要添加第二个启动器意图到你的清单。

 <activity 
     android:name=".yourpackage.MapActivity" 
     android:launchMode="singleTask" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 

     <meta-data android:name="visibility" android:value="0"/> 
    </activity> 

    <activity-alias 
     android:name=".MapWithoutFabActivity" 
     android:targetActivity=".yourpackage.MapActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 

     <meta-data android:name="visibility" android:value="1"/> 
    </activity-alias> 

接下来我们需要修改我们的地图MapActivity以准备更改晶圆厂按钮的可见性。

public class MapActivity extends AppCompatActivity { 

    protected int fabVisibility = View.VISIBLE; 

    @Override protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Hope this method works. 
     Bundle bundle = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData; 
    int visibility = Integer.valueOf(bundle.getString("visibility")); 
    fab.setVisibility(visibility); 
    } 

protected void onNewIntent(Intent intent) { 
     Bundle bundle = getPackageManager().getApplicationInfo(getPackageName(), 
     PackageManager.GET_META_DATA).metaData; 
     int visibility = Integer.valueOf(bundle.getString("visibility")); 
     fab.setVisibility(visibility); 
} 

祝您好运了

埃姆雷

+0

修复了一些失败。请再次检查 –

+0

如果应用程序已经打开,它会从前一个屏幕重新启动。意思是,如果您使用图标A打开应用程序,则如果您单击B,屏幕A会在应用程序显示之前的状态时显示。 – Eselfar

+0

他们都将被打开堆叠。他们是独立的。 –