android - para - onedrive
¿Puedo integrar Microsoft Lens en mi aplicación? (2)
He tomado esta respuesta de Anonsage
/** Open another app.
* @param context current Context, like Activity, App, or Service
* @param packageName the full package name of the app to open
* @return true if likely successful, false if unsuccessful
*/
public static boolean openApp(Context context, String packageName) {
PackageManager manager = context.getPackageManager();
try {
Intent i = manager.getLaunchIntentForPackage(packageName);
if (i == null) {
return false;
//throw new PackageManager.NameNotFoundException();
}
i.addCategory(Intent.CATEGORY_LAUNCHER);
context.startActivity(i);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
Para llamar a Office Lens simplemente escriba
openApp(this, "com.microsoft.office.officelens");
Me gusta la capacidad de Office Lens de recortar, enfocar y alinear automáticamente una imagen ... principalmente para el procesamiento de recibos y gastos.
Quiero tener un flujo de aplicaciones que vaya así:
- El usuario abre mi aplicación y hace clic en el recibo de la fotografía
- Se abre la lente (intención de Android o similar en iOS)
- El usuario toma la foto
- La imagen se devuelve a mi aplicación para su procesamiento
Tengo problemas para que ese flujo ocurra y para que la transferencia de datos (foto) entre la cámara y mi aplicación sea perfecta. ¿Que opciones tengo?
Si miras el archivo Androidmanifest.xml
, verás este XML:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.microsoft.office.officelens" platformBuildVersionCode="21" platformBuildVersionName="5.0.1-1624448">
<uses-permission android:name="android.permission.CAMERA" android:required="true"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PROFILE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-feature android:name="android.hardware.camera" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<application android:allowBackup="true" android:icon="@drawable/ic_officelens" android:label="@string/officelens_app_name" android:largeHeap="true" android:name="com.microsoft.office.officelens.OfficeLensApplication" android:theme="@style/OfficeLensAppTheme">
<activity android:label="@string/officelens_app_name" android:name="com.microsoft.office.apphost.LaunchActivity" android:theme="@style/OfficeLensSplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:configChanges="orientation|screenSize" android:label="@string/officelens_app_name" android:launchMode="singleTask" android:name="com.microsoft.office.officelens.MainActivity" android:theme="@style/FullscreenTheme"/>
<activity android:label="@string/officelens_app_name" android:name="com.microsoft.office.officelens.SecureActivity" android:parentActivityName="com.microsoft.office.officelens.MainActivity" android:windowSoftInputMode="stateHidden"/>
<activity android:label="@string/title_activity_settings" android:name="com.microsoft.office.officelens.SettingsActivity" android:parentActivityName="com.microsoft.office.officelens.MainActivity"/>
<activity android:configChanges="orientation|screenSize" android:label="" android:name="com.microsoft.office.officelens.AboutActivity" android:parentActivityName="com.microsoft.office.officelens.SettingsActivity"/>
<activity android:label="" android:name="com.microsoft.office.officelens.FirstRunActivity" android:parentActivityName="com.microsoft.office.officelens.MainActivity" android:screenOrientation="portrait" android:theme="@style/OfficeLensFirstRunTheme"/>
<activity android:label="@string/title_activity_section_picker" android:name="com.microsoft.onenote.pickerlib.OneNotePickerActivity" android:theme="@style/Theme.AppCompat.Light"/>
<activity android:exported="false" android:icon="@drawable/ms_logo" android:label="@string/webflow_header" android:name="com.microsoft.onlineid.authenticator.AccountAddPendingActivity" android:theme="@style/Theme.MSA"/>
<activity android:configChanges="orientation|screenSize" android:exported="false" android:icon="@drawable/ms_logo" android:label="@string/webflow_header" android:name="com.microsoft.onlineid.internal.ui.WebWizardActivity" android:theme="@style/Theme.MSA" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="com.microsoft.onlineid.internal.SIGN_IN"/>
<action android:name="com.microsoft.onlineid.internal.RESOLVE_INTERRUPT"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:configChanges="orientation|screenSize" android:exported="false" android:icon="@drawable/ms_logo" android:label="@string/webflow_header" android:name="com.microsoft.onlineid.ui.AddAccountActivity" android:theme="@style/Theme.MSA" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="com.microsoft.onlineid.internal.ADD_ACCOUNT"/>
<action android:name="com.microsoft.onlineid.internal.SIGN_UP_ACCOUNT"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:configChanges="orientation|screenSize" android:exported="false" android:name="com.microsoft.onlineid.ui.SignOutActivity" android:theme="@style/Theme.MSA.Transparent"/>
<activity android:exported="false" android:icon="@drawable/ms_logo" android:label="@string/webflow_header" android:name="com.microsoft.onlineid.internal.ui.AccountPickerActivity" android:theme="@style/Theme.MSA.Dialog">
<intent-filter>
<action android:name="com.microsoft.onlineid.internal.PICK_ACCOUNT"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<service android:exported="false" android:name="com.microsoft.onlineid.internal.MsaService">
<intent-filter>
<action android:name="com.microsoft.onlineid.internal.GET_TICKET"/>
<action android:name="com.microsoft.onlineid.internal.UPDATE_PROFILE"/>
<action android:name="com.microsoft.onlineid.internal.SIGN_OUT"/>
<action android:name="com.microsoft.onlineid.internal.SIGN_OUT_ALL_APPS"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
<service android:enabled="true" android:exported="false" android:name="com.microsoft.onlineid.sso.service.MsaSsoService">
<intent-filter>
<action android:name="com.microsoft.msa.action.SSO_SERVICE"/>
</intent-filter>
<meta-data android:name="com.microsoft.msa.service.sso_version" android:value="1"/>
<meta-data android:name="com.microsoft.msa.service.sdk_version" android:value="@string/sdk_version_name"/>
</service>
</application>
<uses-permission android:name="com.android.vending.CHECK_LICENSE"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-feature android:name="android.hardware.telephony" android:required="false"/>
</manifest>
Si lees este archivo detenidamente, verás que es imposible interactuar con las otras API. Ni ''emiten'' ningún ''filtro de intención'' apropiado para interactuar con las otras aplicaciones.
Esto es imposible hoy en día.
De todos modos, obviamente, puede guardar en el almacenamiento local y recuperar los datos de la tarjeta SD con su aplicación.