1. 程式人生 > >web頁面點選按鈕喚起App跳轉到指定頁面以及返回鍵的處理

web頁面點選按鈕喚起App跳轉到指定頁面以及返回鍵的處理

1.在需要跳轉的指定頁面的AndroidManifest中配置

<activity
    android:name=".activity.goods.GoodsDetail"
    android:configChanges="keyboardHidden|orientation|screenSize"
//點選返回時跳轉的activity
    android:parentActivityName=".MainActivity"
    android:screenOrientation="portrait">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity" />
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data
            android:host="my.com"
            android:scheme="m" />
    </intent-filter>
</activity>

2.在指定頁面的接值

Intent i_getvalue = getIntent();
String action = i_getvalue.getAction();

if (Intent.ACTION_VIEW.equals(action)) {
    Uri uri = i_getvalue.getData();
    if (uri != null) {
        itemId = uri.getQueryParameter("id");
    }
} else {
    itemId = getIntent().getStringExtra("id");
}

3.指定頁面返回鍵的處理

@Override
public void onBackPressed() {
    if (isLaunchedActivity(context, MainActivity.class)) {
        Intent upIntent = NavUtils.getParentActivityIntent(this);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            TaskStackBuilder.create(this)
                    .addNextIntentWithParentStack(upIntent)
                    .startActivities();
        } else {
            upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            NavUtils.navigateUpTo(this, upIntent);
        }
    } else {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    }
    super.onBackPressed();
}

/**
 * 判斷目標activity是否啟動
 *
 * @param context
 * @param clazz   傳入ACT_main
 * @return
 */
public boolean isLaunchedActivity(@NonNull Context context, Class<?> clazz) {
    Intent intent = new Intent(context, clazz);
    ComponentName cmpName = intent.resolveActivity(context.getPackageManager());
    boolean flag = false;
    if (cmpName != null) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> taskInfoList = am.getRunningTasks(10);
        for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) {
            if (taskInfo.baseActivity.equals(cmpName)) {
                flag = true;
                break;
            }
        }
    }
    return flag;
}

HTML中的程式碼:

結束