как открыть другую активность приложения из myapp? - PullRequest
0 голосов
/ 11 октября 2018

Я разрабатываю приложение, которое открывает другие приложения с намерениями, и оно отлично работает, но теперь мне нужно открыть определенное действие, и я не знаю, возможно ли это.

уже установило оба приложенияи я не могу открыть определенную активность из моего приложения.

btnCallActivity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    Intent intent = new Intent();
                intent.setClassName("com.rayvatapps.flatplan", "com.rayvatapps.flatplan.LoginActivity");
                intent.putExtra("WEBVIEW_URL", "https://google.com/");
                startActivity(intent);
                } catch (Exception e) {
                    Toast.makeText(mContext, "oops...app is not found", Toast.LENGTH_SHORT).show();
                }
            }
        });

Файл манифеста

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

    <application
        android:allowBackup="true"
        android:exported="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=".LoginActivity"
            android:label="Other App"
            android:exported="true">
            <intent-filter>
                <action android:name="com.rayvatapps.flatplan.app.LoginActivity" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Я получаю следующую ошибку

Error: No Activity found to handle Intent { act=com.rayvatapps.flatplan.app.LoginActivity }

E/Error: Permission Denial: starting Intent { cmp=com.rayvatapps.flatplan/.LoginActivity (has extras) } from ProcessRecord{4310b06 9701:com.rayvatapps.appdemotest/u0a384} (pid=9701, uid=10384) not exported from uid 10378

Любая помощь будетвысоко ценится.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Ваши имена пакетов и классов не совпадают.В зависимости от манифеста приложения, которое вы хотите запустить, вам нужно изменить это:

intent.setClassName("com.rayvatapps.flatplan", "com.rayvatapps.flatplan.LoginActivity");

на следующее:

intent.setClassName("com.rayvatapps.flatmaps", "com.rayvatapps.flatmaps.LoginActivity");

Вам также не нужно <intent-filter> наActivity в приложении, которое вы пытаетесь запустить, поскольку вы используете явное Intent для его запуска.Если вы удалите <intent-filter>, убедитесь, что вы сохранили android:exported="true" для Activity, иначе вы не сможете запустить его из другого приложения.

0 голосов
/ 11 октября 2018

В Manifest.xml второго приложения активности добавить Фильтр намерений -> android.intent.category.DEFAULT

    <activity
        android:name="com.myapp.ActivityName" 
        android:exported="true">
        <intent-filter>
            <action android:name="com.demo.any_name" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

Тогда из вашего приложения

    Intent launch = new Intent("com.demo.any_name");
    startActivity(launch);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...