Android Studio 如何从其他应用程序(如Google)接收网站URL

flseospp  于 2023-02-13  发布在  Android
关注(0)|答案(1)|浏览(115)

我是一名新开发人员。有人能帮助我如何从其他应用程序接收网站URL吗?我的应用程序目前是我的默认浏览器,但我的问题是,我不知道如何接收网站URL。
Here's the preview of the app.

Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
                if (sharedText != null) {
                    // Update UI to reflect text being shared
                    webview1.loadUrl(action);
                }
            }
        }

我尝试使用上面的代码,但它不工作.
另外,我不知道如何检测用户何时点击上面状态栏上edittext中的"done"或"go"按钮(见图)。
我尝试了此代码,但我的应用程序不断关闭:

edittext.setOnEditorActionListener(new OnEditorActionListener() {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
           //do what you want on the press of 'done'
           submit.performClick();
        }    
        return false;
    }
});

请帮帮我。
编辑:我已经添加了Intent过滤器:

<activity
        android:name=".ReceiveUrlActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="@string/app_name"
        android:windowSoftInputMode="stateHidden" >
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.BROWSABLE" />

            <category android:name="android.intent.category.LAUNCHER" /> 

            <category android:name="android.intent.category.DEFAULT" />

            <data android:scheme="http"/> 

            <data android:scheme="https"/>

        </intent-filter>

    </activity>
ufj5ltwl

ufj5ltwl1#

AndroidManifest.xml添加互联网访问权限

...
<uses-permission android:name="android.permission.INTERNET"/>
...
<application
....

在共享时将打开的活动中添加

<activity
        android:name=".MyActivity"
        ...>
        <intent-filter>
            <action android:name="android.intent.action.SEND"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="text/plain"/>
        </intent-filter>
    </activity>

MyActivity.java首先,确保您的应用程序有共享

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();
    if (Intent.ACTION_SEND.equals(action) && type != null) {
        Toast.makeText(this, type+"", Toast.LENGTH_SHORT).show();
        if ("text/plain".equals(type)) handleSendText(intent);
        
    }
    ...
}

确认后处理数据并显示

private void handleSendText(Intent intent) {
    String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
    if (sharedText == null) return;
    WebView webview1 = findViewById(R.id.webview1);
    webview1.getSettings().setJavaScriptEnabled(true);
    webview1.loadUrl(sharedText);
}

for more information

相关问题