机器人。来自url的启动活动无法在浏览器中运行,但可以在文本编辑器中运行

时间:2017-09-25 11:13:31

标签: android

当用户点击浏览器中的网址时,我想启动for (int i = 0 ; i < randomNumber ; i++){ id subView = [view viewWithTag:i]; if ([subView isKindOfClass:[UIImageView class]]){ ((UIImageView *)subView).image = selectedImage; } if ([subView isKindOfClass:[UIButton class]]){ [((UIButton *)subView) setImage:selectedImage forState:UIControlStateNormal]; } } 。我用这种方式创建了自定义清单:

Activity
当我从备注或任何文本编辑器中单击 <activity android:name=".views.RestorePwActivity" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize" android:exported="true"> <intent-filter> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.VIEW" /> <data android:host="mysite.com" android:scheme="https" /> </intent-filter> </activity> 时,会打开

Activity,但当我在浏览器中点击URL时,它会将我重定向到某个网站。

我在堆栈溢出时看到了类似的问题,但这些答案都没有帮助。 我还阅读了现代浏览器限制此类行为的观点。我使用的是Android 5+。是否有可能实现这一目标?

2 个答案:

答案 0 :(得分:1)

请参阅Android的原始文档以获取深层链接https://developer.android.com/training/app-links/deep-linking.html

由于你的代码在清单中显得很好但我无法编译它。如果您想要代码帮助共享您的项目。

我希望给定链接会有所帮助!

答案 1 :(得分:1)

深层链接示例代码:

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="splus.in.codestructure">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".HomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
                <data android:scheme="example"
                    android:host="deeplinksample" />
                <!-- note that the leading "/" is required for pathPrefix-->
            </intent-filter>
        </activity>
    </application>
</manifest>

HomeActivity.java

public class HomeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sample_two);
        Intent intent = getIntent();
        String action = intent.getAction();
        Uri data = intent.getData();

    }
}

您可以通过两种方式执行:

命令行:

F:\AndroidStudioSetup\sdk\platform-tools> adb shell am start -W -a android.intent.action.VIEW -d "example://deeplinksample" splus.in.codestructure

控制台输出:

 Starting: Intent { act=android.intent.action.VIEW dat=example://deeplinksample pkg=splus.in.codestructure }
        Status: ok
        Activity: splus.in.codestructure/.HomeActivity
        ThisTime: 90
        TotalTime: 10383
        WaitTime: 108
        Complete

如果您想从浏览器打开,请尝试以下代码:

Deeplinking.html

enter image description here

您可以将此文件保存在服务器上,也可以复制到SD卡上。用浏览器打开,然后点击**深层链接示例。它会打开你的应用程序。

让我知道是否需要更多帮助!