package com.lody.virtual.client.stub; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; import android.text.TextUtils; import com.lody.virtual.R; import com.lody.virtual.client.env.Constants; import com.lody.virtual.helper.utils.VLog; import com.lody.virtual.os.VUserHandle; public class ChooserActivity extends ResolverActivity { public static final String EXTRA_DATA = "android.intent.extra.virtual.data"; public static final String EXTRA_WHO = "android.intent.extra.virtual.who"; public static final String EXTRA_REQUEST_CODE = "android.intent.extra.virtual.request_code"; public static final String ACTION; static { Intent target = new Intent(); Intent intent = Intent.createChooser(target, ""); ACTION = intent.getAction(); } public static boolean check(Intent intent) { try { return TextUtils.equals(ACTION, intent.getAction()) ||TextUtils.equals(Intent.ACTION_CHOOSER, intent.getAction()); } catch (Exception e) { e.printStackTrace(); } return false; } @SuppressLint("MissingSuperCall") @Override protected void onCreate(Bundle savedInstanceState) { Intent intent = getIntent(); int userId = intent.getIntExtra(Constants.EXTRA_USER_HANDLE, VUserHandle.getCallingUserId()); mOptions = intent.getParcelableExtra(EXTRA_DATA); mResultWho = intent.getStringExtra(EXTRA_WHO); mRequestCode = intent.getIntExtra(EXTRA_REQUEST_CODE, 0); Parcelable targetParcelable = intent.getParcelableExtra(Intent.EXTRA_INTENT); if (!(targetParcelable instanceof Intent)) { VLog.w("ChooseActivity", "Target is not an intent: " + targetParcelable); finish(); return; } Intent target = (Intent) targetParcelable; CharSequence title = intent.getCharSequenceExtra(Intent.EXTRA_TITLE); if (title == null) { title = getString(R.string.choose); } Parcelable[] pa = intent.getParcelableArrayExtra(Intent.EXTRA_INITIAL_INTENTS); Intent[] initialIntents = null; if (pa != null) { initialIntents = new Intent[pa.length]; for (int i = 0; i < pa.length; i++) { if (!(pa[i] instanceof Intent)) { VLog.w("ChooseActivity", "Initial intent #" + i + " not an Intent: " + pa[i]); finish(); return; } initialIntents[i] = (Intent) pa[i]; } } super.onCreate(savedInstanceState, target, title, initialIntents, null, false, userId); } }