chrome意图与Android应用程序共享的数据是什么?

时间:2018-04-01 11:48:38

标签: android google-chrome android-intent browser

我正试图从chrome意图中获取信息。这个场景是当我从chrome或任何其他浏览器与我的应用程序共享一个网页时,我想获取标题和图像,让我们说一个简短的描述并将其存储到我的应用程序中。但问题是,就我研究而言,我从chrome意图中获得的唯一内容就是URL。所以问题是如何找到chrome意图与我的应用程序共享的内容,如果我可以获取URL旁边的额外数据如何获取它? 下面的代码只抓取chrome中的URL,那么如何抓取网页标题和图片?

的AndroidManifest.xml

<activity
            android:name=".WebActivity"
            android:parentActivityName=".MainActivity"
            android:theme="@style/AppTheme.NoActionBar"></activity>
        <activity
            android:name=".GetDataActivity"
            android:parentActivityName=".MainActivity"
            android:theme="@style/AppTheme.NoActionBar">
            <!-- Used to handle Chrome then menu then share.-->
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:mimeType="text/plain" />
                <data android:mimeType="image/*" />
            </intent-filter>
        </activity>

GetDataActivity.java

public class GetDataActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_get_data);

        // Get intent, action and MIME type
        Intent intent = getIntent();
        String action = intent.getAction();
        String type = intent.getType();

        if (Intent.ACTION_SEND.equals(action) && type != null) {
            if ("text/plain".equals(type)) {
                handleSendText(intent); // Handle text being sent
            } else if (type.startsWith("image/")) {
                handleSendImage(intent); // Handle single image being sent
            }
        } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
            if ("text/plain".equals(type)) {
                handleSendMultipleTexts(intent); // Handle multiple images being sent
            }
        } else {
            // Handle other intents, such as being started from the home screen
        }
    }

    void handleSendText(Intent intent) {
        String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
        if (sharedText != null) {
            TextView datTitle = findViewById(R.id.dataTitle);
            datTitle.setText(sharedText);
        }
    }

    void handleSendImage(Intent intent) {
        Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
        if (imageUri != null) {
            ImageView datImage = findViewById(R.id.dataImage);
            datImage.setImageURI(imageUri);
        }
    }

    void handleSendMultipleTexts(Intent intent) {
        ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
        if (imageUris != null) {
            // Update UI to reflect multiple images being shared
        }
    }
}

1 个答案:

答案 0 :(得分:0)

移动设备上的Chrome浏览器不共享链接或网址以外的任何内容。因此,我正在考虑一种从设备中的移动应用程序中获取图像和标题等信息的方法。但这不是它的工作方式。您只有链接,因此有两种选择,一种是将链接发送到服务器,然后将所需的信息抓取下来,例如爬网或抓取元数据或图形数据。另一个是在设备上的移动应用程序中执行相同的操作,这几乎是不可能的。