Эта проблема может возникнуть в android 6.0, если вы не разрешили разрешение камеры для своего приложения. Как и в случае с Android 6.0, вы можете обрабатывать разрешение на разрешение приложения, которое вы предоставите или не имеете конкретных прав для приложения.
Итак, вам нужно разрешить разрешение из settings->apps->your_app->enable camera permission
, если оно еще не включено.
Имейте отдельного помощника EXE, который берет параметрические усилители командной строки (или канал к его StandardInput), который делает то, что требуется, и назовите это из своего главного приложения. Это сохраняет материал MAPI за пределами пространства процесса Вашего главного приложения. Хорошо, Вы все еще смешиваете MAPI и.NET, но в очень недолгом процессе. Предположение - то, что MAPI и CLR начинают вызывать проблемы с дольше рабочими процессами.
Мы пользуемся превосходной библиотекой Redemption Data Objects Dmitry Streblechenko, которая позволяет нам писать такой код "контейнера" в JScript и вызывать это, которое сохраняет CLR и миры MAPI в отдельных процессах, но поддерживаемым способом.
@Chris ре Fournier. запись неуправляемого DLL. Это не будет работать, потому что проблема смешивает MAPI и управляемый код в том же процессе.
Обработка вызовов. Запустите на Mailto: протокол (как показано ниже) даст Вам основную функциональность, но не вложения.
Process.Start("mailto:name@domain.com?subject=TestCode&Body=Test Text");
Можно сделать этот подход с путями вложения, но эта опция только работает с некоторой старой версией перспективы такой как 98. Я предполагаю, что это происходит из-за потенциала securty риск.
Если кто-либо действительно будет использовать outlook.exe, то это даст предупреждения системы безопасности под перспективой 2003 (и Иждивенец 2007 года на настройках).
Необходимо смочь сделать неуправляемый DLL, который выполняет операции, Вы хотите использовать MAPI и затем вызываете тот DLL из своего управляемого кода. Я не записал бы прямую обертку MAPI, но что-то, что выполняет всю функциональность, которой Вы требуете MAPI, содержавшегося в том неуправляемом DLL. Это, вероятно, было бы самым безопасным способом использовать MAPI из управляемого кода.
Вы могли также использовать Освобождение Outlook, которое поддерживается из управляемого кода; я не сразу уверен, имеет ли это простую замену MAPISendDocuments, но Dmitry, услужливый, если у Вас есть вопросы.
Что касается "катастрофических отказов и записей", вот другая кавычка от MS, поддерживают парня, здесь
Это - вид вещи, это будет главным образом работать. Это будет работать, в то время как Вы пишете это. Затем это будет работать при тестировании его. Это будет работать, в то время как Ваш клиент оценивает его. Затем, как только клиент развертывает его - BAM! Именно тогда это решит начать иметь проблемы. И Microsoft не собирается помогать Вам с ним, так как мы сказали Вам не делать это во-первых.:)
Для кого-то испытанного с MAPI, им потребовалось бы меньше времени для проворота кода, чтобы сделать точно, что Вы хотите от неуправляемого кода (чтение: плоскость C++), чем ввод этого сообщения и чтение ответа (никакое преступление).
Вы удачливы функциональность, в которой Вы нуждаетесь, ограничен. Все, в чем Вы нуждаетесь, является простой утилитой C++ для взятия параметрических усилителей, в которых Вы нуждаетесь на командной строке и издаете правильные приказы MAPI. Затем Вы вся эта утилита из Вашего управляемого кода, как Вы были бы для выполнения любого другого процесса.
HTH
Я сделал это использование функции MAPISendMail и нескольких внутренних классов для обертывания некоторых из других связанных с MAPI структур. Пока это - единственное использование, это возможно, хотя не тривиальный, чтобы сделать безопасно, поскольку это требует очень пристального внимания к различным неуправляемым типам данных и выделению памяти / освобождение и GC. В то время как это все еще не поддерживается, я использую это в производственном коде (хотя это еще не поставлялось).
Когда я спросил Matt Stehle об этом, ответ, который я получил, был:
Я действительно не знаю о намного лучшем способе сделать это и любые проблемы, с которыми Вы столкнулись, здесь будет, вероятно, восстанавливаемо в поддерживаемом сценарии (т.е. VB6 или неуправляемый C++). Просто знайте, что, если бы Вы когда-нибудь сталкивались со сценарием, была проблема, был вызван конкретно этой функцией, называемой от.NET, что у нас не было бы никакой другой рекомендации для Вас затем для не использования.NET.
Не точно благословение при использовании его, но также и не высказывании там является любыми другими опциями на самом деле сделать это из управляемого кода.
MAPISendDocuments устарел и может быть удален. Вместо этого вам следует использовать MAPISendMail. См. Простой MAPI