Я пытаюсь отправить электронное письмо с намерением явно позвонить GMAIL в мое приложение. Он отлично работал на всех устройствах, но теперь у меня произошли сбои на устройствах 6 Маршаллонов Android 6. Проблема я получаю это:Android Marshmallow, отправляющий несколько файлов в gmail с намерением
12-14 00:02:55.365: E/AndroidRuntime(18570): Theme: themes:{default=overlay:com.cyngn.hexo, iconPack:com.cyngn.hexoicons, fontPkg:com.cyngn.hexo, com.android.systemui=overlay:com.cyngn.hexo, com.android.systemui.navbar=overlay:com.cyngn.hexo}
12-14 00:02:55.365: E/AndroidRuntime(18570): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.SEND_MULTIPLE typ=image/* flg=0x3 cmp=com.google.android.gm/.ComposeActivityGmail clip={image/* U:file:///storage/emulated/0/Mydir/myfile20161213105548.jpg} (has extras) } from ProcessRecord{cc9833c 18570:com.myappdr/u0a341} (pid=18570, uid=10341) not exported from uid 10050
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.os.Parcel.readException(Parcel.java:1620)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.os.Parcel.readException(Parcel.java:1573)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2677)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.app.Activity.startActivityForResult(Activity.java:3930)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.app.Activity.startActivityForResult(Activity.java:3890)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.app.Activity.startActivity(Activity.java:4213)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.app.Activity.startActivity(Activity.java:4181)
12-14 00:02:55.365: E/AndroidRuntime(18570): at com.myapp.SendGmail.onClick(SendGmail.java:222)
12-14 00:02:55.365: E/AndroidRuntime(18570): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.os.Handler.dispatchMessage(Handler.java:102)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.os.Looper.loop(Looper.java:148)
12-14 00:02:55.365: E/AndroidRuntime(18570): at android.app.ActivityThread.main(ActivityThread.java:5461)
12-14 00:02:55.365: E/AndroidRuntime(18570): at java.lang.reflect.Method.invoke(Native Method)
12-14 00:02:55.365: E/AndroidRuntime(18570): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-14 00:02:55.365: E/AndroidRuntime(18570): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Вот разрешение у меня есть в моем манифесте:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
А вот как я отправляю почту в моем источнике:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "[email protected]" });
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getResources().getString(R.string.mail_title));
emailIntent.setType("image/*");
ArrayList<Uri> uris = new ArrayList<Uri>();
for (Map.Entry<CartElement,Integer> c : SingletonShoppingCart.getInstance(null).get_Cart().entrySet()){
if ((c.getKey().getImgPath() !=null) || (!c.getKey().getImgPath().isEmpty())){
uris.add(Uri.fromFile(new File(c.getKey().getImgPath())));
}
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,strMailMsg);
emailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail");
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivity(emailIntent);
Измените свой вопрос и опубликуйте всю трассировку стека Java. – CommonsWare
Вместо этого используйте ACTION_SEND. – greenapps
Я добавил всю трассировку стека. В настоящее время я могу воспроизвести его на моем телефоне OnePlusOne, который использует CianogenMod, но сбои в консоли разработчика из Marshmallow. –