2009-12-23 3 views
1

У меня есть приложение для Android и как часть приложения, я хотел бы, чтобы пользователь мог видеть, выбирать и изменять контакты пользователя. Моя основная деятельность расширяет TabActivity для удобства использования (со стороны пользователей). Поэтому на вкладке я хотел бы показать пользовательские контакты, я сделал это с помощью этого кода: mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Contacts").setContent(new Intent(Intent.ACTION_PICK, People.CONTENT_URI))); , который использует активность контакта по умолчанию телефона. мой андроид манифест: ` Android securityException и пользовательские контакты

<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.READ_OWNER_DATA"/> 

<application android:icon="@drawable/icon" android:theme="@android:style/Theme.NoTitleBar"> 

    <activity android:name=".WaveCally" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".streamer" 
       android:label="@string/stream"> 
    </activity> 



</application> 
<uses-sdk android:minSdkVersion="4" /> 

`, но я получаю исключение безопасности в моем журнале и аварий деятельности. есть идеи? Также, как я уже говорил, я хотел бы изменить контакты (в основном добавить дополнительные поля), чтобы сделать это, я должен получить contantprovider и в каждом контакте добавить дополнительные поля? будут ли эти дополнительные поля доступны, если я затем выберу контакт из вышеупомянутой деятельности?

ответ

2

Вам необходимо объявить в приложении манифест, что ваше приложение будет иметь доступ к контактам. (android.permission.READ_CONTACTS)

Это то, что вам нужно сделать:

http://developer.android.com/guide/topics/manifest/uses-permission-element.html

В основном, добавьте следующую строку в приложении манифеста (сразу после открытия манифеста тег):

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

Я опубликовал свой манифест, но по какой-то причине тег манифеста не показан. У меня есть это разрешение, но я все-таки получаю исключение, поэтому я написал здесь, потому что это кажется странным. это копия из моего манифеста: maxsap

0
<uses-permission android:name="android.permission.READ_CONTACTS" /> 

Помимо добавления этого разрешения в ваш манифест, для API> = 23 вам также необходимо получить разрешение на запуск

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { 
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, PERMISSIONS_REQUEST_READ_CONTACTS); 
//After this point you wait for callback in onRequestPermissionsResult(int, String[], int[]) overriden method 
ActivityCompat.requestPermissions(SettingsActivity.this, 
    new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION} 
         , PERMISSIONS_REQUEST_READ_CONTACTS); 
    } else { 
    // Android version is lesser than 6.0 or the permission is already granted. 
    //fetch contacts 
    } 
Смежные вопросы