我有以下配置,我有一個應用程序,它是主應用程序,另一個應用程序被認爲是第一個應用程序的主題。沒有第一個應用程序,第二個應用程序無法運行。現在如何僅在某些情況下設置活動無歷史參數?
,我不得不面對兩種情況:
用戶安裝第二應用,而他已經擁有了第一主要應用。
用戶安裝第二個應用程序,但他沒有第一個應用程序主應用程序。
在第一種情況下,當用戶運行第二應用(主題),我想,因爲它已經安裝到他重定向到第一應用(主)。在這種情況下,我想從堆棧中刪除第二個應用(主題)的活動。因此,如果用戶按回來,它會返回到Android桌面而不是秒(主題)應用。在這種情況下,用戶不應該意識到中間有一個活動。
在第二種情況下,我想運行第二個應用(主題)的活動。這項活動有一個按鈕,重定向用戶去谷歌播放和安裝第一個應用程序(主)。在這種情況下,如果用戶決定按後退按鈕,他將從谷歌播放,回到第二個應用程序(主題)的活動,所以在這種情況下,我希望用戶看到這個活動,它應該位於該堆棧與第一種情況相反。
這是我目前活動代碼:
public class MainActivity extends Activity {
private Context mContext;
private RelativeLayout rlShareAndWin;
private TextView tvInPrizeTitle, tvPrizeDesc;
private boolean isCorrespondingKiboAppInstalled;
private String kiboAppPackageName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initControllers();
initControllerListeners();
}
@Override
protected void onResume() {
super.onResume();
String themePackageName = getPackageName();
kiboAppPackageName = themePackageName.substring(0, (themePackageName.indexOf(getResources().getString(R.string.theme_away_suffix_string))));
boolean isCorrespondingKiboAppInstalled = isKiboAppInstalledOrNot(kiboAppPackageName);
if (isCorrespondingKiboAppInstalled) {
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(kiboAppPackageName);
//launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(launchIntent);
}
}
private void initControllers() {
mContext = this;
Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica LT 97 Black Condensed Oblique_0.ttf");
setContentView(R.layout.layout_activity_main);
rlShareAndWin = (RelativeLayout) findViewById(R.id.rlShareAndWin);
tvInPrizeTitle = (TextView) findViewById(R.id.tvInPrizeTitle);
tvPrizeDesc = (TextView) findViewById(R.id.tvPrizeDesc);
tvInPrizeTitle.setTypeface(typeface);
tvPrizeDesc.setTypeface(typeface);
}
private void initControllerListeners() {
rlShareAndWin.setOnClickListener(OnClickShareAndWin);
}
private View.OnClickListener OnClickShareAndWin = new View.OnClickListener() {
@Override
public void onClick(View v) {
goToPlayStoreToInstallKiboApp(kiboAppPackageName);
}
};
private void goToPlayStoreToInstallKiboApp(String aKiboAppPackageName) {
launchGooglePlayWithPackage(mContext, aKiboAppPackageName);
}
public void launchGooglePlayWithPackage(Context aContext, String packageName) {
try {
aContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)));
} catch (android.content.ActivityNotFoundException anfe) {
aContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + packageName)));
}
}
private boolean isKiboAppInstalledOrNot(String uri) {
PackageManager pm = getPackageManager();
boolean appInstalled = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
appInstalled = true;
}
catch (PackageManager.NameNotFoundException e) {
appInstalled = false;
}
return appInstalled ;
}
}
你可以看到,我試圖設置:
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
,
launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
要啓動的主要意圖它的安裝情況下的應用程序。但這些都不能幫助我實現我想要的。
即使我很納悶,呼籲結束,而你從App B就開始應用在一個第一種情況下不能正常工作? – Darpan 2014-11-24 11:21:30
它的作品,由於某種原因,在我第一次嘗試我得到了一些意外的行爲.. – 2014-11-24 11:22:22