Исключение безопасности при экспорте контактов на SD-карту

#android #contacts #android-contacts

#Android #Контакты #android-контакты

Вопрос:

Я пытаюсь экспортировать контакты на SD-карту, передав имя пакета в Intent, как показано ниже

 Intent i = new Intent();
i.setComponent(new ComponentName("com.android.contacts",
                    "com.android.contacts.ExportVCardActivity"));
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
  

Но это дает следующее исключение в Galaxy Ace и S2 (я пробовал только на этих устройствах)

11-04 12:37:05.808: W / System.err(3461): java.lang.Исключение SecurityException: отказ в разрешении: начальное намерение { flg= 0x10000000 cmp=com.android.contacts/.ExportVCardActivity } из ProcessRecord{40710c10 3461:com.ImpExp/10060} (pid=3461, uid=10060) требует null 11-04 12:37:05.816: W/ System.err(3461): в android.os.Parcel.readException(Parcel.java:1322) 11-04 12:37:05.820: W / System.err(3461): в android.os.Parcel.readException (Parcel.java:1276) 11-04 12:37:05.820: W / System.err(3461): в android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1351) 11-04 12:37:05.824: W / System.err(3461): в android.app.Instrumentation.execStartActivity(Instrumentation.java:1374) 11-04 12:37:05.828: W / System.err(3461): в android.app.Activity.startActivityForResult(Activity.java:2827) 11-04 12:37:05.832: W / System.err(3461): в android.app.Activity.startActivity (Activity.java:2933) 11-04 12:37:05.832: W / System.err(3461): на com.ImpExp.ImpExp $4.onClick(ImpExp.java:74) 11-04 12:37:05.832: W / System.err(3461): в android.view.View.performClick(View.java:2485) 11-04 12:37:05.832: W / System.err(3461): в android.view.View$performClick.run(Просмотр.java:9080) 11-04 12:37:05.832: W / System.err(3461): в android.os.Handler.handleCallback (обработчик.java:587) 11-04 12:37:05.832: W / System.err(3461): в android.os.Handler.DispatchMessage (обработчик.java:92) 11-04 12:37:05.832: W / System.err(3461): в android.os.Looper.loop (Looper.java:130) 11-04 12:37:05.832: W / System.err(3461): в android.app.ActivityThread.main (ActivityThread.java:3683) 11-04 12:37:05.832: W / System.err(3461): на java.lang.reflect.Метод.Вызывающий (собственный метод) 11-04 12:37:05.832: W / System.err(3461): на java.lang.reflect.Метод.invoke(Метод.java:507) 11-04 12:37:05.835: W / System.err(3461): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 11-04 12:37:05.835: W / System.err(3461): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 11-04 12:37:05.835: W / System.err(3461): в dalvik.system.NativeStart.main (собственный метод)

я дал

android.разрешение.READ_CONTACTS» и
android.permission.WRITE_EXTERNAL_STORAGE»

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

Комментарии:

1. возможно, это не решение, но попробуйте добавить разрешение WRITE_CONTACTS.

Ответ №1:

Нужно ли объявлять активность на manifest.xml файл?