глубокая ссылка из приложения в другое - PullRequest
0 голосов
/ 10 мая 2018

У меня есть два приложения для Android, App1 и App2.

Приложение 1 имеет функцию MainActivity с кнопкой входа в систему.
Приложение 2 имеет два вида деятельности: MainActivity и LoginActivity.
В App1 MainActivity при нажатии кнопки «Вход» предполагается ссылка на App2 LoginActivity.

В оболочке adb я могу запустить App2 LoginActivity с помощью следующей команды:

adb shell am start -W -a android.intent.action.VIEW -d "example://login" com.example.android

Но в App1 MainActivity при нажатии кнопки входа в систему вместо этого запускается App2 MainActivity. Чего мне не хватает?

App1 MainActivity:

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

        Button loginBtn = (Button) findViewById(R.id.btn_login);
        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Deeplink to authenticator app
                Uri myAction = Uri.parse("example://login");

                PackageManager packageManager = getPackageManager();
                Intent intent = packageManager.getLaunchIntentForPackage("com.example.android");

                if (intent != null) {
                    intent.setAction(Intent.ACTION_VIEW);
                    intent.setData(myAction);
                    startActivity(intent);
                }
            }
        });
    }

App2 AndroidManifest.xml

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

    <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=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".LoginActivity"
            android:label="@string/login_label">

            <intent-filter android:label="@string/filter_view_http_login">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- Accepts URIs that begin with "http://www.example.com/login” -->
                <data android:scheme="http"
                    android:host="www.example.com"
                    android:pathPrefix="/login" />
                <!-- note that the leading "/" is required for pathPrefix-->
            </intent-filter>
            <intent-filter android:label="@string/filter_view_example_login">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- Accepts URIs that begin with "example://login” -->
                <data android:scheme="example"
                    android:host="login" />
            </intent-filter>

        </activity>
    </application>

</manifest>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...