Chrome意向与android应用共享的数据是什么

问题描述 投票:2回答:2

我正在尝试从chrome意图中获取信息。这种情况是,当我从Chrome或其他任何浏览器与我的应用程序共享网页时,我想获取标题和图像,并做一个简短说明,并将其存储到我的应用程序中。但问题是,就我所做的研究而言,从chrome意图中我唯一得到的就是URL。所以问题是如果我可以在URL旁边获取额外的数据,如何找出与我的应用共享的chrome intent,该如何获取呢?下面的代码仅获取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
        }
    }
}
android google-chrome android-intent browser
2个回答
0
投票

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


0
投票

嗯...根据我的亲身经历,我可以1.从clipData进行网页预览2.来自意图Exras的URL

关于标题?我还在苏醒。你可以试试看,祝你好运〜

© www.soinside.com 2019 - 2024. All rights reserved.