将ContentProvider中的联系人提供给标准联系人应用

时间:2018-03-06 06:57:21

标签: android android-contentprovider android-contacts contactscontract

我试图搜索,但我甚至不能以简短的形式提出问题。

  1. 我有SQLite表,其中包含id / username / mobile / email。
  2. 我为它创建了ContentProvider
  3. 我通过AccountManager(AccountAuthenticator)
  4. 创建了帐户

    所有这些都有效,我可以使用我的函数Sqlite2Contacts创建联系人。即我使用我的帐户名称和类型向SQLite提供的每个ContactsContract记录。通过标准应用程序可以看到所有联系人,当我删除帐户时,所有联系人也被删除。

    一切正常,但......我想我错过了什么。我想这应该是它的一些框架。

    即。我将ContentProvider绑定到......使用某种适配器而没有手动联系人同步的东西。

    我需要唯一的答案我可以做或不做,而不是实施。如果我能......我应该使用什么类/框架/适配器。

1 个答案:

答案 0 :(得分:0)

听起来你的方向错误,你不应该把你的应用程序的联系人放在$nugetFeed = "http://tfs/MyTeam/_packaging/MyProject/nuget/v3/index.json" $nugetExe = "C:\pathToNuget\nuget.exe" $packageToDelete = "MyPackage" $apiKey = "VSTS" function Get-PackageVersions { Param ( [string]$Package, [string]$Feed, [string]$Nuget ) $packageContent = & $Nuget list -Source $Feed -PreRelease -AllVersions $packages = $packageContent.Split([Environment]::NewLine) foreach($line in $packages) { $parts = $line.Split(' ') $packageName = $parts[0] $packageVersion = $parts[1] if($packageName -eq $Package) { $packageVersion } } } $versions = Get-PackageVersions -Package $packageToDelete -Feed $nugetFeed -Nuget $nugetExe foreach($version in $versions) { & $nugetExe delete $packageToDelete $version -Source $nugetFeed -ApiKey VSTS $apiKey }

要将特定于应用的联系人放入Android的联系人数据库中,您的应用需要两个组件:帐户和SyncAdapter。

ContentProvider允许用户进行身份验证(如果需要)并手动删除/同步您应用的联系人。 Account由系统调用或由您的应用以编程方式调用,并将SyncAdapter同步到您应用的RawContacts + ACCOUNT_TYPE下的通讯录数据库中。

你可以遵循Udi的两个教程:

这里的官方教程:
https://developer.android.com/guide/topics/providers/contacts-provider.html
(在ACCOUNT_NAME下)