Ho cercato di ottenere due attività in due applicazioni separate per comunicare utilizzando un'azione personalizzata e un intento implicito.Azioni personalizzate utilizzando intenti impliciti tra le applicazioni
La prima applicazione (server), ha il seguente manifesto:
<application android:icon="@drawable/ic_launcher"
android:label="@string/app_name" android:theme="@style/AppTheme">
<activity android:name="edu.example.sharing.manager.SecureFileShare"
android:label="@string/title_activity_secure_file_share" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="edu.example.sharing.action.STORE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
</application>
La seconda applicazione crea un intento come segue:
File f = new File(s);
Uri fileUri = Uri.fromFile(f);
Intent intent = new Intent();
intent.setData(fileUri);
intent.setAction("edu.example.sharing.action.STORE");
startActivityForResult(intent, STORE_REQUEST);
Il suo manifesto è normale. Quando provo a trasmettere l'intento nell'applicazione client, tuttavia, ottengo un'attività non trovato eccezione:
FATAL EXCEPTION: main
android.content.ActivityNotFoundException: No Activity found to handle Intent {act=edu.example.sharing.action.STORE dat=file:///storage/sdcard0/Download/Alarcon12-Rigoberto.pdf }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
at android.app.Activity.startActivityForResult(Activity.java:3351)
at android.app.Activity.startActivityForResult(Activity.java:3312)
ciò che sta causando Android di non riconoscere l'attività dichiarata nella seconda applicazione? Grazie.
provare a inserire un attributo esportato nell'attività 'FileStore' nel manifest. – Varun
anche per me a volte funziona a dint quando stavo impostando l'azione usando 'setAction()', ma poi passai a usare il costruttore 'Intent' per impostare l'azione, es:' nuovo Intent ("edu.example, manager. action.STORE ");' – Varun
Provare a modificare l'azione in modo che corrisponda all'ID del pacchetto, quindi edu.example.manager.action.STORE diventa edu.example.manager.FileStore.action.STORE –