美文网首页
使用intent发送内容分享链接

使用intent发送内容分享链接

作者: LeoFranz | 来源:发表于2019-08-15 14:44 被阅读0次

    1、使用intent发送一段白文本

    mReportButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Intent i = new Intent(Intent.ACTION_SEND);
                    i.setType("text/plain");
                    i.putExtra(Intent.EXTRA_TEXT, getCrimeReport());
                    i.putExtra(Intent.EXTRA_SUBJECT,
                            getString(R.string.crime_report_subject));
                    i = Intent.createChooser(i, getString(R.string.send_report));
                    startActivity(i);
                }
            });
    

    触发后会出现一个应用选择器,如果设置了默认应用或者设备上只有一个activity可以响应隐式intent,选择器上可能只有一个应用。

    2、从联系人中获取信息

    final Intent pickContact = new Intent(Intent.ACTION_PICK,
                    ContactsContract.Contacts.CONTENT_URI);
            pickContact.addCategory(Intent.CATEGORY_APP_BROWSER);
            mSuspectButton = (Button) view.findViewById(R.id.crime_suspect);
            mSuspectButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    startActivityForResult(pickContact, REQUEST_CONTACT);
                }
            });
    

    请求的信息会封装到intent中在onActivityResult中获取

    @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (resultCode != Activity.RESULT_OK) {
                return;
            }
            if (requestCode == REQUEST_CONTACT && data != null) {
                Uri contactUri = data.getData();
                // Specify which fields you want your query to return
                // values for.
                String[] queryFields = new String[]{
                        ContactsContract.Contacts.DISPLAY_NAME
                };
                // Perform your query - the contactUri is like a "where"
                // clause here
                Cursor c = getActivity().getContentResolver()
                        .query(contactUri, queryFields, null, null, null);
                try {
                    // Double-check that you actually got results
                    if (c.getCount() == 0) {
                        return;
                    }
                    // Pull out the first column of the first row of data -
                    // that is your suspect's name.
                    c.moveToFirst();
                    String suspect = c.getString(0);
                    mCrime.setSuspect(suspect);
                    mSuspectButton.setText(suspect);
                } finally {
                    c.close();
                }
            }
        }
    

    该solution中如果设备上没有联系人应用,本应用就会崩溃,通过

    PackageManager packageManager = getActivity().getPackageManager();
            if (packageManager.resolveActivity(pickContact,
                    PackageManager.MATCH_DEFAULT_ONLY) == null) {
                mSuspectButton.setEnabled(false);
            }
    

    检查是否有能响应intent的app,如果没有就将button置灰。
    PackageManager知道本设备包括了哪些组件。

    相关文章

      网友评论

          本文标题:使用intent发送内容分享链接

          本文链接:https://www.haomeiwen.com/subject/ylrzjctx.html