android.content.Intent#getScheme ( )源码实例Demo

下面列出了android.content.Intent#getScheme ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: opencdk-appwidget   文件: MainActivity.java
private void handleIntent() {
    final Intent intent = getIntent();
    if (intent != null) {
        String scheme = intent.getScheme();
        if (GConstants.SCHEME.equalsIgnoreCase(scheme)) {
            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    try {
                        Uri uri = intent.getData();
                        String className = uri.getQueryParameter("className");

                        Intent transferIntent = new Intent();
                        transferIntent.putExtras(intent);
                        transferIntent.setClassName(MainActivity.this, className);
                        startActivity(transferIntent);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }, 300);
        }
    }
}
 
private String getScheme(String url) {
    try {
        Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
        return intent.getScheme();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    return "";
}
 
源代码3 项目: hash-checker   文件: MainActivity.java
@Override
public void create() {
    Intent intent = getIntent();
    String scheme = null;
    ClipData clipData = null;
    if (intent != null) {
        scheme = intent.getScheme();
        clipData = intent.getClipData();
    }
    Uri externalFileUri = null;
    if (clipData != null) {
        externalFileUri = clipData.getItemAt(0).getUri();
    }

    HashCalculatorFragment mainFragment = new HashCalculatorFragment();
    if (scheme != null && scheme.compareTo(ContentResolver.SCHEME_CONTENT) == 0) {
        mainFragment.setArguments(getConfiguredBundleWithDataUri(intent.getData()));
        SettingsHelper.setGenerateFromShareIntentMode(this, true);
    } else if (externalFileUri != null) {
        mainFragment.setArguments(getConfiguredBundleWithDataUri(externalFileUri));
        SettingsHelper.setGenerateFromShareIntentMode(this, true);
    } else {
        mainFragment.setArguments(getBundleForShortcutAction(intent.getAction()));
        SettingsHelper.setGenerateFromShareIntentMode(this, false);
    }

    showFragment(mainFragment);
}
 
源代码4 项目: letv   文件: ShareAllChannelActivity.java
private void resolveUri(Intent intent, Uri data) {
    String scheme = intent.getScheme();
    if (scheme != null && "letvclient".equalsIgnoreCase(scheme)) {
        String actionType = "";
        String appName = "";
        String title = "";
        String officialSite = "";
        String text = "";
        String imgUrl = "";
        String playUrl = "";
        String from = "";
        try {
            actionType = data.getQueryParameter("actionType");
            appName = data.getQueryParameter("appName");
            title = data.getQueryParameter("title");
            officialSite = data.getQueryParameter("officialSite");
            text = data.getQueryParameter("text");
            imgUrl = data.getQueryParameter("imgUrl");
            playUrl = data.getQueryParameter("playUrl");
            from = data.getQueryParameter("from");
            packageName = data.getQueryParameter("package");
            invoker = data.getQueryParameter("invoker");
            LogInfo.log("fornia", "ShareAllChannelActivity  getIntent()" + actionType + "|" + appName + "|" + title + "|" + officialSite + "|" + text + "|" + imgUrl + "|" + playUrl + "|" + packageName + "|" + invoker + "|" + from);
            share2Channel(actionType, appName, title, officialSite, text, imgUrl, playUrl, from);
        } catch (NullPointerException e) {
            LogInfo.log("fornia", "NullPointerException e:" + e.getMessage() + "|" + e.toString());
            ToastUtils.showToast(getString(2131100833));
        } catch (Exception e2) {
            ToastUtils.showToast("三方传入参数未知错误,停止分享!");
            LogInfo.log("fornia", "Exception e:" + e2.getMessage() + "|" + e2.toString());
        }
    }
}
 
public List<ResolveInfo> queryIntentFromList(Intent intent, String resolvedType,
                                       ArrayList<DynamicApkParser.ActivityIntentInfo[]> listCut) {
    ArrayList<ResolveInfo> resultList = new ArrayList();

    FastImmutableArraySet<String> categories = getFastIntentCategories(intent);
    final String scheme = intent.getScheme();
    int N = listCut.size();
    for (int i = 0; i < N; ++i) {
        buildResolveList(intent, categories,
                resolvedType, scheme, listCut.get(i), resultList);
    }

    sortResults(resultList);
    return resultList;
}
 
源代码6 项目: letv   文件: LitePlayerStartActivity.java
private void initLite(final Intent intent, boolean isCreate) {
    String scheme = intent.getScheme();
    if (!TextUtils.isEmpty(scheme) && AlbumLaunchUtils.LITESCHEME.equalsIgnoreCase(scheme)) {
        this.isLitePlayer = true;
        AlbumLaunchUtils.initLite(this, intent);
        ApkManager.getInstance().setLiteAppCallState(true);
        if (ApkManager.getInstance().getPluginInstallState("com.letv.android.lite") != 1) {
            UIsUtils.setScreenLandscape(this);
            if (isCreate) {
                setContentView(2130903057);
            }
            LetvApplication.getInstance().mCallLiteIntent = intent;
            JarUtil.updatePlugin(this, 1, true);
        } else if (LetvApplication.getInstance().mIsPluginInitedSuccess) {
            JarLaunchUtils.launchLitePlayerDefault(this, intent);
        } else {
            PluginInitedCallback.mPluginInitedListener = new OnPluginInitedListener(this) {
                final /* synthetic */ LitePlayerStartActivity this$0;

                public void onInited() {
                    JarLaunchUtils.launchLitePlayerDefault(this.this$0.mContext, intent);
                }
            };
        }
    } else if (isCreate) {
        setContentView(2130903068);
    }
}
 
public List<ResolveInfo> queryIntentFromList(Intent intent, String resolvedType,
                                       ArrayList<DynamicApkParser.ServiceIntentInfo[]> listCut) {
    ArrayList<ResolveInfo> resultList = new ArrayList();

    FastImmutableArraySet<String> categories = getFastIntentCategories(intent);
    final String scheme = intent.getScheme();
    int N = listCut.size();
    for (int i = 0; i < N; ++i) {
        buildResolveList(intent, categories,
                resolvedType, scheme, listCut.get(i), resultList);
    }

    sortResults(resultList);
    return resultList;
}
 
源代码8 项目: letv   文件: MainActivity.java
private void animEndProcess() {
    this.mMainShow = true;
    getWindow().clearFlags(1024);
    if (VERSION.SDK_INT >= 19) {
        getWindow().addFlags(67108864);
    }
    LogInfo.log("bootPic", "animate end");
    this.contentView.setVisibility(0);
    getWindow().setBackgroundDrawableResource(2131493324);
    this.animationIsFinish = true;
    this.imageLayout.setVisibility(8);
    Intent intent = getIntent();
    Uri data = intent.getData();
    if (data != null) {
        String scheme = intent.getScheme();
        if (scheme != null && SearchMainActivity.LESO_FROM.equalsIgnoreCase(scheme)) {
            if (!isFromThirdParty(data.getQueryParameter("from"))) {
                return;
            }
            return;
        }
    }
    if (!this.initTashIsSuccess || this.mIsFromPush || this.mLaunchByPush || this.mIsForceLaunch) {
        getHomeFragment().setHomeRecordVisible(true);
    } else {
        initPopDialog();
    }
    this.isAnimationIsFinish = true;
}
 
/**
 * Broadcast the given intent to all interested BroadcastReceivers. This
 * call is asynchronous; it returns immediately, and you will continue
 * executing while the receivers are run.
 * 
 * @param intent
 *            The Intent to broadcast; all receivers matching this Intent
 *            will receive the broadcast.
 * 
 * @see #registerReceiver
 */
public boolean sendBroadcast(Intent intent) {
	synchronized (mReceivers) {
		final String action = intent.getAction();
		final String type = intent.resolveTypeIfNeeded(mAppContext
				.getContentResolver());
		final Uri data = intent.getData();
		final String scheme = intent.getScheme();
		final Set<String> categories = intent.getCategories();

		final boolean debug = DEBUG
				|| ((intent.getFlags() & Intent.FLAG_DEBUG_LOG_RESOLUTION) != 0);
		if (debug)
			Log.v(TAG, "Resolving type " + type + " scheme " + scheme
					+ " of intent " + intent);

		ArrayList<ReceiverRecord> entries = mActions
				.get(intent.getAction());
		if (entries != null) {
			if (debug)
				Log.v(TAG, "Action list: " + entries);

			ArrayList<ReceiverRecord> receivers = null;
			for (int i = 0; i < entries.size(); i++) {
				ReceiverRecord receiver = entries.get(i);
				if (debug)
					Log.v(TAG, "Matching against filter " + receiver.filter);

				if (receiver.broadcasting) {
					if (debug) {
						Log.v(TAG, "  Filter's target already added");
					}
					continue;
				}

				int match = receiver.filter.match(action, type, scheme,
						data, categories, "LocalBroadcastManager");
				if (match >= 0) {
					if (debug)
						Log.v(TAG,
								"  Filter matched!  match=0x"
										+ Integer.toHexString(match));
					if (receivers == null) {
						receivers = new ArrayList<ReceiverRecord>();
					}
					receivers.add(receiver);
					receiver.broadcasting = true;
				} else {
					if (debug) {
						String reason;
						switch (match) {
						case IntentFilter.NO_MATCH_ACTION:
							reason = "action";
							break;
						case IntentFilter.NO_MATCH_CATEGORY:
							reason = "category";
							break;
						case IntentFilter.NO_MATCH_DATA:
							reason = "data";
							break;
						case IntentFilter.NO_MATCH_TYPE:
							reason = "type";
							break;
						default:
							reason = "unknown reason";
							break;
						}
						Log.v(TAG, "  Filter did not match: " + reason);
					}
				}
			}

			if (receivers != null) {
				for (int i = 0; i < receivers.size(); i++) {
					receivers.get(i).broadcasting = false;
				}
				mPendingBroadcasts.add(new BroadcastRecord(intent,
						receivers));
				if (!mHandler.hasMessages(MSG_EXEC_PENDING_BROADCASTS)) {
					mHandler.sendEmptyMessage(MSG_EXEC_PENDING_BROADCASTS);
				}
				return true;
			}
		}
	}
	return false;
}
 
源代码10 项目: AndroidComponentPlugin   文件: IntentResolver.java
public List<R> queryIntent(Intent intent, String resolvedType, boolean defaultOnly,
        int userId) {
    String scheme = intent.getScheme();

    ArrayList<R> finalList = new ArrayList<R>();

    final boolean debug = localLOGV ||
            ((intent.getFlags() & Intent.FLAG_DEBUG_LOG_RESOLUTION) != 0);

    if (debug) Slog.v(
        TAG, "Resolving type=" + resolvedType + " scheme=" + scheme
        + " defaultOnly=" + defaultOnly + " userId=" + userId + " of " + intent);

    F[] firstTypeCut = null;
    F[] secondTypeCut = null;
    F[] thirdTypeCut = null;
    F[] schemeCut = null;

    // If the intent includes a MIME type, then we want to collect all of
    // the filters that match that MIME type.
    if (resolvedType != null) {
        int slashpos = resolvedType.indexOf('/');
        if (slashpos > 0) {
            final String baseType = resolvedType.substring(0, slashpos);
            if (!baseType.equals("*")) {
                if (resolvedType.length() != slashpos+2
                        || resolvedType.charAt(slashpos+1) != '*') {
                    // Not a wild card, so we can just look for all filters that
                    // completely match or wildcards whose base type matches.
                    firstTypeCut = mTypeToFilter.get(resolvedType);
                    if (debug) Slog.v(TAG, "First type cut: " + Arrays.toString(firstTypeCut));
                    secondTypeCut = mWildTypeToFilter.get(baseType);
                    if (debug) Slog.v(TAG, "Second type cut: "
                            + Arrays.toString(secondTypeCut));
                } else {
                    // We can match anything with our base type.
                    firstTypeCut = mBaseTypeToFilter.get(baseType);
                    if (debug) Slog.v(TAG, "First type cut: " + Arrays.toString(firstTypeCut));
                    secondTypeCut = mWildTypeToFilter.get(baseType);
                    if (debug) Slog.v(TAG, "Second type cut: "
                            + Arrays.toString(secondTypeCut));
                }
                // Any */* types always apply, but we only need to do this
                // if the intent type was not already */*.
                thirdTypeCut = mWildTypeToFilter.get("*");
                if (debug) Slog.v(TAG, "Third type cut: " + Arrays.toString(thirdTypeCut));
            } else if (intent.getAction() != null) {
                // The intent specified any type ({@literal *}/*).  This
                // can be a whole heck of a lot of things, so as a first
                // cut let's use the action instead.
                firstTypeCut = mTypedActionToFilter.get(intent.getAction());
                if (debug) Slog.v(TAG, "Typed Action list: " + Arrays.toString(firstTypeCut));
            }
        }
    }

    // If the intent includes a data URI, then we want to collect all of
    // the filters that match its scheme (we will further refine matches
    // on the authority and path by directly matching each resulting filter).
    if (scheme != null) {
        schemeCut = mSchemeToFilter.get(scheme);
        if (debug) Slog.v(TAG, "Scheme list: " + Arrays.toString(schemeCut));
    }

    // If the intent does not specify any data -- either a MIME type or
    // a URI -- then we will only be looking for matches against empty
    // data.
    if (resolvedType == null && scheme == null && intent.getAction() != null) {
        firstTypeCut = mActionToFilter.get(intent.getAction());
        if (debug) Slog.v(TAG, "Action list: " + Arrays.toString(firstTypeCut));
    }

    FastImmutableArraySet<String> categories = getFastIntentCategories(intent);
    if (firstTypeCut != null) {
        buildResolveList(intent, categories, debug, defaultOnly, resolvedType,
                scheme, firstTypeCut, finalList, userId);
    }
    if (secondTypeCut != null) {
        buildResolveList(intent, categories, debug, defaultOnly, resolvedType,
                scheme, secondTypeCut, finalList, userId);
    }
    if (thirdTypeCut != null) {
        buildResolveList(intent, categories, debug, defaultOnly, resolvedType,
                scheme, thirdTypeCut, finalList, userId);
    }
    if (schemeCut != null) {
        buildResolveList(intent, categories, debug, defaultOnly, resolvedType,
                scheme, schemeCut, finalList, userId);
    }
    filterResults(finalList);
    sortResults(finalList);

    if (debug) {
        Slog.v(TAG, "Final result list:");
        for (int i=0; i<finalList.size(); i++) {
            Slog.v(TAG, "  " + finalList.get(i));
        }
    }
    return finalList;
}
 
源代码11 项目: V.FlyoutTest   文件: LocalBroadcastManager.java
/**
 * Broadcast the given intent to all interested BroadcastReceivers.  This
 * call is asynchronous; it returns immediately, and you will continue
 * executing while the receivers are run.
 *
 * @param intent The Intent to broadcast; all receivers matching this
 *     Intent will receive the broadcast.
 *
 * @see #registerReceiver
 */
public boolean sendBroadcast(Intent intent) {
    synchronized (mReceivers) {
        final String action = intent.getAction();
        final String type = intent.resolveTypeIfNeeded(
                mAppContext.getContentResolver());
        final Uri data = intent.getData();
        final String scheme = intent.getScheme();
        final Set<String> categories = intent.getCategories();

        final boolean debug = DEBUG ||
                ((intent.getFlags() & Intent.FLAG_DEBUG_LOG_RESOLUTION) != 0);
        if (debug) Log.v(
                TAG, "Resolving type " + type + " scheme " + scheme
                + " of intent " + intent);

        ArrayList<ReceiverRecord> entries = mActions.get(intent.getAction());
        if (entries != null) {
            if (debug) Log.v(TAG, "Action list: " + entries);

            ArrayList<ReceiverRecord> receivers = null;
            for (int i=0; i<entries.size(); i++) {
                ReceiverRecord receiver = entries.get(i);
                if (debug) Log.v(TAG, "Matching against filter " + receiver.filter);

                if (receiver.broadcasting) {
                    if (debug) {
                        Log.v(TAG, "  Filter's target already added");
                    }
                    continue;
                }

                int match = receiver.filter.match(action, type, scheme, data,
                        categories, "LocalBroadcastManager");
                if (match >= 0) {
                    if (debug) Log.v(TAG, "  Filter matched!  match=0x" +
                            Integer.toHexString(match));
                    if (receivers == null) {
                        receivers = new ArrayList<ReceiverRecord>();
                    }
                    receivers.add(receiver);
                    receiver.broadcasting = true;
                } else {
                    if (debug) {
                        String reason;
                        switch (match) {
                            case IntentFilter.NO_MATCH_ACTION: reason = "action"; break;
                            case IntentFilter.NO_MATCH_CATEGORY: reason = "category"; break;
                            case IntentFilter.NO_MATCH_DATA: reason = "data"; break;
                            case IntentFilter.NO_MATCH_TYPE: reason = "type"; break;
                            default: reason = "unknown reason"; break;
                        }
                        Log.v(TAG, "  Filter did not match: " + reason);
                    }
                }
            }

            if (receivers != null) {
                for (int i=0; i<receivers.size(); i++) {
                    receivers.get(i).broadcasting = false;
                }
                mPendingBroadcasts.add(new BroadcastRecord(intent, receivers));
                if (!mHandler.hasMessages(MSG_EXEC_PENDING_BROADCASTS)) {
                    mHandler.sendEmptyMessage(MSG_EXEC_PENDING_BROADCASTS);
                }
                return true;
            }
        }
    }
    return false;
}
 
源代码12 项目: zom-android-matrix   文件: RouterActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mApp = (ImApp)getApplication();

    mHandler = new MyHandler(this);

    Intent intent = getIntent();

    mDoLock = ACTION_LOCK_APP.equals(intent.getAction());

    if (mDoLock) {
        shutdownAndLock(this);

        return;
    } else if (Panic.isTriggerIntent(intent)) {
        if (PanicResponder.receivedTriggerFromConnectedApp(this)) {
            if (Preferences.uninstallApp()) {
                // lock and delete first for rapid response, then uninstall
                shutdownAndLock(this);
                PanicResponder.deleteAllAppData(this);
                Intent uninstall = new Intent(Intent.ACTION_DELETE);
                uninstall.setData(Uri.parse("package:" + getPackageName()));
                startActivity(uninstall);
            } else if (Preferences.clearAppData()) {
                // lock first for rapid response, then delete
                shutdownAndLock(this);
                PanicResponder.deleteAllAppData(this);
            } else if (Preferences.lockApp()) {
                shutdownAndLock(this);
            }
            // TODO add other responses here, paying attention to if/else order
        } else if (PanicResponder.shouldUseDefaultResponseToTrigger(this)) {
            if (Preferences.lockApp()) {
                shutdownAndLock(this);
            }
        }
        // this Intent should not trigger any more processing
        finish();
        return;
    }

    mSignInHelper = new SignInHelper(this, mHandler);
    mDoSignIn = intent.getBooleanExtra(EXTRA_DO_SIGNIN, false);

    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

    mCacheWord = new CacheWordHandler(this, (ICacheWordSubscriber)this);
    mCacheWord.connectToService();

    // if we have an incoming contact, send it to the right place
    String scheme = intent.getScheme();
    if(TextUtils.equals(scheme, "keanu"))
    {
        intent.setClass(this, AddContactActivity.class);
        startActivity(intent);
        finish();
        return;
    }

}
 
源代码13 项目: letv   文件: MeasurementEvent.java
private static Bundle getApplinkLogData(Context context, String eventName, Bundle appLinkData, Intent applinkIntent) {
    Bundle logData = new Bundle();
    ComponentName resolvedActivity = applinkIntent.resolveActivity(context.getPackageManager());
    if (resolvedActivity != null) {
        logData.putString("class", resolvedActivity.getShortClassName());
    }
    if (APP_LINK_NAVIGATE_OUT_EVENT_NAME.equals(eventName)) {
        if (resolvedActivity != null) {
            logData.putString("package", resolvedActivity.getPackageName());
        }
        if (applinkIntent.getData() != null) {
            logData.putString("outputURL", applinkIntent.getData().toString());
        }
        if (applinkIntent.getScheme() != null) {
            logData.putString("outputURLScheme", applinkIntent.getScheme());
        }
    } else if (APP_LINK_NAVIGATE_IN_EVENT_NAME.equals(eventName)) {
        if (applinkIntent.getData() != null) {
            logData.putString("inputURL", applinkIntent.getData().toString());
        }
        if (applinkIntent.getScheme() != null) {
            logData.putString("inputURLScheme", applinkIntent.getScheme());
        }
    }
    for (String key : appLinkData.keySet()) {
        Object o = appLinkData.get(key);
        String logValue;
        if (o instanceof Bundle) {
            for (String subKey : ((Bundle) o).keySet()) {
                logValue = objectToJSONString(((Bundle) o).get(subKey));
                if (key.equals("referer_app_link")) {
                    if (subKey.equalsIgnoreCase("url")) {
                        logData.putString("refererURL", logValue);
                    } else if (subKey.equalsIgnoreCase("app_name")) {
                        logData.putString("refererAppName", logValue);
                    } else if (subKey.equalsIgnoreCase("package")) {
                        logData.putString("sourceApplication", logValue);
                    }
                }
                logData.putString(key + "/" + subKey, logValue);
            }
        } else {
            logValue = objectToJSONString(o);
            if (key.equals("target_url")) {
                Uri targetURI = Uri.parse(logValue);
                logData.putString("targetURL", targetURI.toString());
                logData.putString("targetURLHost", targetURI.getHost());
            } else {
                logData.putString(key, logValue);
            }
        }
    }
    return logData;
}
 
源代码14 项目: Zom-Android-XMPP   文件: AddContactActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);

    setTitle("");

    mApp = (ImApp)getApplication();

    mHandler = new SimpleAlertHandler(this);

    setContentView(R.layout.add_contact_activity);

    TextView label = (TextView) findViewById(R.id.input_contact_label);
    label.setText(getString(R.string.enter_your_friends_account, mApp.getDefaultUsername()));

    mNewAddress = (EditText) findViewById(R.id.email);
    mNewAddress.addTextChangedListener(mTextWatcher);

    mNewAddress.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            if (actionId == EditorInfo.IME_ACTION_SEND) {

                inviteBuddies();
            }
            return false;
        }
    });

    Intent intent = getIntent();
    String scheme = intent.getScheme();
    if (TextUtils.equals(scheme, "xmpp"))
    {
        addContactFromUri(intent.getData());
    }

    setupActions ();

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

}
 
源代码15 项目: Dashchan   文件: LocalBroadcastManager.java
/**
 * Broadcast the given intent to all interested BroadcastReceivers. This call is asynchronous; it returns
 * immediately, and you will continue executing while the receivers are run.
 *
 * @param intent
 *            The Intent to broadcast; all receivers matching this Intent will receive the broadcast.
 *
 * @see #registerReceiver
 */
public boolean sendBroadcast(Intent intent) {
	synchronized (mReceivers) {
		final String action = intent.getAction();
		final String type = intent.resolveTypeIfNeeded(MainApplication.getInstance().getContentResolver());
		final Uri data = intent.getData();
		final String scheme = intent.getScheme();
		final Set<String> categories = intent.getCategories();

		ArrayList<ReceiverRecord> entries = mActions.get(intent.getAction());
		if (entries != null) {
			ArrayList<ReceiverRecord> receivers = null;
			for (int i = 0; i < entries.size(); i++) {
				ReceiverRecord receiver = entries.get(i);
				if (receiver.broadcasting) {
					continue;
				}

				int match = receiver.filter.match(action, type, scheme, data, categories, "LocalBroadcastManager");
				if (match >= 0) {
					if (receivers == null) {
						receivers = new ArrayList<>();
					}
					receivers.add(receiver);
					receiver.broadcasting = true;
				}
			}

			if (receivers != null) {
				for (int i = 0; i < receivers.size(); i++) {
					receivers.get(i).broadcasting = false;
				}
				mPendingBroadcasts.add(new BroadcastRecord(intent, receivers));
				if (!mHandler.hasMessages(MSG_EXEC_PENDING_BROADCASTS)) {
					mHandler.sendEmptyMessage(MSG_EXEC_PENDING_BROADCASTS);
				}
				return true;
			}
		}
	}
	return false;
}
 
源代码16 项目: Zom-Android-XMPP   文件: RouterActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mApp = (ImApp)getApplication();

    mHandler = new MyHandler(this);

    Intent intent = getIntent();

    mDoLock = ACTION_LOCK_APP.equals(intent.getAction());

    if (mDoLock) {
        shutdownAndLock(this);

        return;
    } else if (Panic.isTriggerIntent(intent)) {
        if (PanicResponder.receivedTriggerFromConnectedApp(this)) {
            if (Preferences.uninstallApp()) {
                // lock and delete first for rapid response, then uninstall
                shutdownAndLock(this);
                PanicResponder.deleteAllAppData(this);
                Intent uninstall = new Intent(Intent.ACTION_DELETE);
                uninstall.setData(Uri.parse("package:" + getPackageName()));
                startActivity(uninstall);
            } else if (Preferences.clearAppData()) {
                // lock first for rapid response, then delete
                shutdownAndLock(this);
                PanicResponder.deleteAllAppData(this);
            } else if (Preferences.lockApp()) {
                shutdownAndLock(this);
            }
            // TODO add other responses here, paying attention to if/else order
        } else if (PanicResponder.shouldUseDefaultResponseToTrigger(this)) {
            if (Preferences.lockApp()) {
                shutdownAndLock(this);
            }
        }
        // this Intent should not trigger any more processing
        finish();
        return;
    }

    mSignInHelper = new SignInHelper(this, mHandler);
    mDoSignIn = intent.getBooleanExtra(EXTRA_DO_SIGNIN, true);

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

    mCacheWord = new CacheWordHandler(this, (ICacheWordSubscriber)this);
    mCacheWord.connectToService();

    // if we have an incoming contact, send it to the right place
    String scheme = intent.getScheme();
    if(TextUtils.equals(scheme, "xmpp"))
    {
        intent.setClass(this, AddContactActivity.class);
        startActivity(intent);
        finish();
        return;
    }
}
 
/**
 * Broadcast the given intent to all interested BroadcastReceivers.  This
 * call is asynchronous; it returns immediately, and you will continue
 * executing while the receivers are run.
 *
 * @param intent The Intent to broadcast; all receivers matching this
 *     Intent will receive the broadcast.
 *
 * @see #registerReceiver
 */
public boolean sendBroadcast(Intent intent) {
    if (RePluginFramework.mHostInitialized) {
        try {
            return (Boolean) ProxyLocalBroadcastManagerVar.sendBroadcast.call(sOrigInstance, intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
    synchronized (mReceivers) {
        final String action = intent.getAction();
        final String type = intent.resolveTypeIfNeeded(
                mAppContext.getContentResolver());
        final Uri data = intent.getData();
        final String scheme = intent.getScheme();
        final Set<String> categories = intent.getCategories();

        final boolean debug = DEBUG ||
                ((intent.getFlags() & Intent.FLAG_DEBUG_LOG_RESOLUTION) != 0);
        if (debug) {
            Log.v(
                    TAG, "Resolving type " + type + " scheme " + scheme
                            + " of intent " + intent);
        }

        ArrayList<ReceiverRecord> entries = mActions.get(intent.getAction());
        if (entries != null) {
            if (debug) {
                Log.v(TAG, "Action list: " + entries);
            }

            ArrayList<ReceiverRecord> receivers = null;
            for (int i=0; i<entries.size(); i++) {
                ReceiverRecord receiver = entries.get(i);
                if (debug) {
                    Log.v(TAG, "Matching against filter " + receiver.filter);
                }

                if (receiver.broadcasting) {
                    if (debug) {
                        Log.v(TAG, "  Filter's target already added");
                    }
                    continue;
                }

                int match = receiver.filter.match(action, type, scheme, data,
                        categories, "PluginLocalBroadcastManager");
                if (match >= 0) {
                    if (debug) {
                        Log.v(TAG, "  Filter matched!  match=0x" +
                                Integer.toHexString(match));
                    }
                    if (receivers == null) {
                        receivers = new ArrayList<ReceiverRecord>();
                    }
                    receivers.add(receiver);
                    receiver.broadcasting = true;
                } else {
                    if (debug) {
                        String reason;
                        switch (match) {
                            case IntentFilter.NO_MATCH_ACTION: reason = "action"; break;
                            case IntentFilter.NO_MATCH_CATEGORY: reason = "category"; break;
                            case IntentFilter.NO_MATCH_DATA: reason = "data"; break;
                            case IntentFilter.NO_MATCH_TYPE: reason = "type"; break;
                            default: reason = "unknown reason"; break;
                        }
                        Log.v(TAG, "  Filter did not match: " + reason);
                    }
                }
            }

            if (receivers != null) {
                for (int i=0; i<receivers.size(); i++) {
                    receivers.get(i).broadcasting = false;
                }
                mPendingBroadcasts.add(new BroadcastRecord(intent, receivers));
                if (!mHandler.hasMessages(MSG_EXEC_PENDING_BROADCASTS)) {
                    mHandler.sendEmptyMessage(MSG_EXEC_PENDING_BROADCASTS);
                }
                return true;
            }
        }
    }
    return false;
}
 
源代码18 项目: springreplugin   文件: IntentMatcherHelper.java
/**
 * 根据 Intent 匹配组件
 *
 * @param context    Context
 * @param intent     调用方传来的 Intent
 * @param filtersMap 插件中声明的所有组件和 IntentFilter
 * @return ComponentInfo
 */
public static String doMatchIntent(Context context, Intent intent, Map<String, List<IntentFilter>> filtersMap) {
    if (filtersMap == null) {
        return null;
    }

    final String action = intent.getAction();
    final String type = intent.resolveTypeIfNeeded(context.getContentResolver());
    final Uri data = intent.getData();
    final String scheme = intent.getScheme();
    final Set<String> categories = intent.getCategories();

    for (Map.Entry<String, List<IntentFilter>> entry : filtersMap.entrySet()) {
        String pluginName = entry.getKey();
        List<IntentFilter> filters = entry.getValue();
        if (filters == null) {
            continue;
        }

        for (IntentFilter filter : filters) {
            int match = filter.match(action, type, scheme, data, categories, "ComponentList");
            if (match >= 0) {
                if (LOG) {
                    LogDebug.d(TAG, "IntentFilter 匹配成功: " + entry.getKey());
                }
                return pluginName;
            } else {
                if (LOG) {
                    String reason;
                    switch (match) {
                        case IntentFilter.NO_MATCH_ACTION:
                            reason = "action";
                            break;
                        case IntentFilter.NO_MATCH_CATEGORY:
                            reason = "category";
                            break;
                        case IntentFilter.NO_MATCH_DATA:
                            reason = "data";
                            break;
                        case IntentFilter.NO_MATCH_TYPE:
                            reason = "type";
                            break;
                        default:
                            reason = "unknown reason";
                            break;
                    }
                    LogDebug.d(TAG, "  Filter did not match: " + reason);
                }
            }
        }
    }
    return "";
}
 
/**
 * Broadcast the given intent to all interested BroadcastReceivers.  This
 * call is asynchronous; it returns immediately, and you will continue
 * executing while the receivers are run.
 *
 * @param intent The Intent to broadcast; all receivers matching this
 *     Intent will receive the broadcast.
 *
 * @see #registerReceiver
 */
public boolean sendBroadcast(Intent intent) {
    synchronized (mReceivers) {
        final String action = intent.getAction();
        final String type = intent.resolveTypeIfNeeded(
                mAppContext.getContentResolver());
        final Uri data = intent.getData();
        final String scheme = intent.getScheme();
        final Set<String> categories = intent.getCategories();

        final boolean debug = DEBUG ||
                ((intent.getFlags() & Intent.FLAG_DEBUG_LOG_RESOLUTION) != 0);
        if (debug) Log.v(
                TAG, "Resolving type " + type + " scheme " + scheme
                + " of intent " + intent);

        ArrayList<ReceiverRecord> entries = mActions.get(intent.getAction());
        if (entries != null) {
            if (debug) Log.v(TAG, "Action list: " + entries);

            ArrayList<ReceiverRecord> receivers = null;
            for (int i=0; i<entries.size(); i++) {
                ReceiverRecord receiver = entries.get(i);
                if (debug) Log.v(TAG, "Matching against filter " + receiver.filter);

                if (receiver.broadcasting) {
                    if (debug) {
                        Log.v(TAG, "  Filter's target already added");
                    }
                    continue;
                }

                int match = receiver.filter.match(action, type, scheme, data,
                        categories, "LocalBroadcastManager");
                if (match >= 0) {
                    if (debug) Log.v(TAG, "  Filter matched!  match=0x" +
                            Integer.toHexString(match));
                    if (receivers == null) {
                        receivers = new ArrayList<ReceiverRecord>();
                    }
                    receivers.add(receiver);
                    receiver.broadcasting = true;
                } else {
                    if (debug) {
                        String reason;
                        switch (match) {
                            case IntentFilter.NO_MATCH_ACTION: reason = "action"; break;
                            case IntentFilter.NO_MATCH_CATEGORY: reason = "category"; break;
                            case IntentFilter.NO_MATCH_DATA: reason = "data"; break;
                            case IntentFilter.NO_MATCH_TYPE: reason = "type"; break;
                            default: reason = "unknown reason"; break;
                        }
                        Log.v(TAG, "  Filter did not match: " + reason);
                    }
                }
            }

            if (receivers != null) {
                for (int i=0; i<receivers.size(); i++) {
                    receivers.get(i).broadcasting = false;
                }
                mPendingBroadcasts.add(new BroadcastRecord(intent, receivers));
                if (!mHandler.hasMessages(MSG_EXEC_PENDING_BROADCASTS)) {
                    mHandler.sendEmptyMessage(MSG_EXEC_PENDING_BROADCASTS);
                }
                return true;
            }
        }
    }
    return false;
}
 
源代码20 项目: zom-android-matrix   文件: AddContactActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);

    setTitle("");

    mApp = (ImApp)getApplication();

    long providerId = getIntent().getLongExtra(ContactsPickerActivity.EXTRA_RESULT_PROVIDER,mApp.getDefaultProviderId());
    long accountId = getIntent().getLongExtra(ContactsPickerActivity.EXTRA_RESULT_ACCOUNT,mApp.getDefaultAccountId());

    mConn = RemoteImService.getConnection(providerId, accountId);
    mHandler = new SimpleAlertHandler(this);

    setContentView(R.layout.add_contact_activity);

    TextView label = (TextView) findViewById(R.id.input_contact_label);
    label.setText(getString(R.string.enter_your_friends_account, mApp.getDefaultUsername()));

    mNewAddress = (EditText) findViewById(R.id.email);
    mNewAddress.addTextChangedListener(mTextWatcher);

    mNewAddress.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
            if (actionId == EditorInfo.IME_ACTION_SEND) {

                addContact();
            }
            return false;
        }
    });


    setupActions ();

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    Intent intent = getIntent();
    mAddLocalContact = intent.getBooleanExtra("addLocalContact",true);

    String scheme = intent.getScheme();

    if (TextUtils.equals(scheme, "matrix"))
    {
        addContactFromUri(intent.getData());
    }


    if (intent.hasExtra("username"))
    {
        String newContact = intent.getStringExtra("username");
        mNewAddress.setText(newContact);

    }

}
 
 方法所在类
 同类方法