标签: android-syncadapter

没有互联网连接的syncadapter

我有一个工作正常的同步适配器.它不需要互联网连接,因为它需要将地址簿与另一个本地存储(我的应用程序)同步.当Wifi关闭且设备没有任何互联网连接时,Android会在"帐户和同步"设置活动中禁用同步.

即使连接关闭,有没有办法保持我的同步适配器开启?

connection android android-syncadapter

5
推荐指数
1
解决办法
1436
查看次数

使用同步适配器创建的自定义帐户类型创建联系人

我已经为android编写了自己的Sync Adapter.我可以将联系人显示在联系人应用中.但我无法使用android中的默认联系人应用程序为此帐户类型创建新的.

在创建联系人时,很难找到有关如何在默认联系人应用程序中列出要创建的自己的帐户类型的任何信息

android android-syncadapter

5
推荐指数
1
解决办法
1271
查看次数

我真的需要导出 SyncAdapter 服务吗?

onPerformSync(...) {
    // building status bar notification here
}

<service android:name=".SyncService" android:exported="false"> ...
Run Code Online (Sandbox Code Playgroud)

这对我有用(4.4.2 SGN3)。出现通知。这两个requestSync()addPeriodicSync()

有没有人有一些想法?

是否需要出口SyncAdapter服务?

我真正想知道的是是否有任何其他(敌人)应用程序可以启动我的exported服务。如果可以,我不需要导出该服务,希望 Android 不是那么自由。

我在 Android 开发指南/api 中没有找到任何说明。我是新手,我希望我的问题是正确的,并且足够好理解:)

android synchronization android-syncadapter

5
推荐指数
1
解决办法
287
查看次数

创建一个 Android 后台服务,不断轮询 REST API 以获取数据

我需要编写一个 Android 服务来轮询服务器以获取数据,解析数据,然后通过意图将其发送到应用程序。轮询必须频繁发生(每隔几秒)。根据我的阅读,不推荐这样的轮询(由于电池寿命问题)。这是我第一次在 Android 上开发,在做了大量研究之后,有一些事情我还不清楚。

我不确定服务、同步适配器或警报管理器是否更适合我的需求。在这个问题的上下文中,哪一个最有意义?

此服务需要在启动时启动并继续在后台运行。轮询服务器后,数据通过意图发送到另一个应用程序。该服务应该根本没有用户交互。从我读过的内容来看,Android 似乎试图阻止人们由于恶意软件问题而编写此类内容。有没有可能做到这一点?

android android-service android-syncadapter

5
推荐指数
1
解决办法
1万
查看次数

OnUpdate()不调用窗口小部件服务

我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何URL时,我将其存储在本地数据库中,从中列出该窗口小部件.

当我打开小部件时,它从本地数据库中获取所有细节并在小部件的列表视图中显示它.

1)当我打开小部件,第一的onUpdate方法WidgetProvider被称为

2)然后onUpdate()将调用服务WidgetService

3)然后服务将调用Widget Factory使用本地存储的db更新列表视图.

在小部件工厂中,它将获取db值并更新小部件中的lisviews.

以上是设置窗口小部件时发生的过程.

第一堂课:

        public class WidgetProviderFavorite extends AppWidgetProvider {

        @SuppressWarnings("deprecation")
        @Override
          public void onUpdate(Context ctxt, AppWidgetManager appWidgetManager,int[] appWidgetIds) {            
            for (int i=0; i<appWidgetIds.length; i++) {
              Intent svcIntent=new Intent(ctxt, WidgetServiceFavorite.class);
              svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
              svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));  
              RemoteViews widget=new RemoteViews(ctxt.getPackageName(),R.layout.widget_favorite);
              widget.setRemoteAdapter(appWidgetIds[i], R.id.listFavoriteLogin,svcIntent);                                  
              Intent clickIntent=new Intent(ctxt, WidgetActivityFavorite.class);                                 
              PendingIntent clickPI=PendingIntent.getActivity(ctxt, 0,clickIntent,PendingIntent.FLAG_UPDATE_CURRENT);

              widget.setPendingIntentTemplate(R.id.listFavoriteLogin, clickPI);                                              
              appWidgetManager.updateAppWidget(appWidgetIds[i], widget);

            }

            super.onUpdate(ctxt, appWidgetManager, appWidgetIds);
          } 
Run Code Online (Sandbox Code Playgroud)

第二课:

        public class WidgetServiceFavorite extends RemoteViewsService {
          @Override
          public RemoteViewsFactory onGetViewFactory(Intent intent) {

            return(new WidgetFactoryFavorite(this.getApplicationContext(),intent));         
          } …
Run Code Online (Sandbox Code Playgroud)

android listview android-widget android-syncadapter

5
推荐指数
1
解决办法
1259
查看次数

同步适配器未在小米上启动

我已经在 Xamarin 中编写了一个同步适配器,但在小米 MiUI 下存在问题。

同步适配器启动有两种方法:一种是通过电话“设置->帐户->同步”,另一种是在应用程序中借助ContentResolver.RequestSync()。

首先,我必须为我的应用程序打开 MiUI AutoStart。否则安全系统将错误记录下来。

I/AutoStartManagerService: MIUILOG-拒绝服务:Intent { act=android.content.SyncAdapter cmp=com.fingrad.dashboard/.AdapterService (has extras) } userId : 0 uid : 10186 E/SyncManager: 绑定尝试失败 - 目标: ComponentInfo {com.fingrad.dashboard/com.fingrad.dashboard.AdapterService}

然而,除非应用程序已经在手机内存中,否则第一种方法不起作用。如果 SyncAdapterService 没有清空 Process 属性,则第二种方法不起作用。请参阅下面的示例。

[Service(Name = "com.fingrad.dashboard.SyncAdapterService"  
, Exported = true, Process = ":sync")] 
[IntentFilter(new[] { "android.content.SyncAdapter" })] 
[MetaData("android.content.SyncAdapter", Resource = "@xml/syncadapter")] 
class SyncAdapterService : Service
Run Code Online (Sandbox Code Playgroud)

换句话说,如果任何条件为真,适配器就不起作用。1) Adapter 服务有 Process 属性 2) 手机内存中没有应用实例。

很明显,问题的根源在于MiUI安全。MiUI 启动同步适配器,启动另一个没有自动启动权限的进程。我尝试设置“Process="application default process name”,但没有帮助。

更新PS 时间过去了,但问题仍然存在。红米 Note 4、MIUI 9.5、Android 7 和红米 Note 3、MIUI 9.5、Android 6。

android xamarin.android android-syncadapter

5
推荐指数
1
解决办法
1678
查看次数

Flutter - 有没有类似于 flutter 中的同步适配器的东西

我想将我的本地数据库与我的服务器同步。在 Android 中,我们有同步适配器来完成工作并使生活更轻松。我想知道我们在 Flutter 中是否有类似的东西,或者我如何在 Flutter 中做到这一点。

android synchronization android-syncadapter dart flutter

5
推荐指数
1
解决办法
1388
查看次数

如何在SyncAdapter中添加类别

我尝试了一个伟大的Google示例来同步来自Web服务的联系人,并且工作正常.这称为SampleSyncAdapter,非常值得:http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

我已经完成了所有工作,但我无法在示例中或在文档中找到添加链接到自定义活动的类别的方法,就像下面的屏幕截图一样:

(我只有同步帐户选项和复选框)

在此输入图像描述

所以,我的问题是:如何添加帐户设置类别?

settings android android-syncadapter

4
推荐指数
1
解决办法
1878
查看次数

Android 4.x:在联系人中获取自定义帐户类型侦听

我正在尝试为Android编写自己的Sync Adapter.我正在从SDK中挖掘样本同步适配器,但它可怕的未记录.我可以将联系人显示在联系人应用中.但我无法编辑或创建新的.

很难找到有关如何在默认联系人应用中列出要创建的自己的帐户类型的任何信息,或者让它们可编辑.我不想添加任何自定义stüff字段和android已经支持的数据.

任何人都可以指向我如何将我的同步适配器集成到默认联系人应用程序(如交换同步)的教程或示例?

  • 什么网络添加到AndroidManifest.xml
  • 需要添加到contacts.xml的内容
  • 需要添加到syncadapter.xml的内容
  • 是否需要添加任何代码才能工作?

顺便说一句:
我不关心低于ICS的Android版本.我到处都读到2.x的联系人应用程序不支持这个,但3.x及以上版本.2.x不在桌面上,所以我正在寻找ICS方式来做到这一点.

提前致谢

android android-syncadapter

4
推荐指数
1
解决办法
2080
查看次数

ContentResolver.addPeriodicSync间隔向上舍入

我的同步适配器确实工作得非常好,除了在过去的几个小时里有一些小问题让我失意...对于我的应用程序,我希望同步适配器以10秒的间隔运行.

ContentResolver.addPeriodicSync(mAccount, AUTHORITY, Bundle.EMPTY, 5);
Run Code Online (Sandbox Code Playgroud)

会发生什么是同步开始每60秒而不是请求的5秒.当我将其更改interval为70秒时,同步每70秒开始一次.

从日志文件:

W/ContentService? Requested poll frequency of 5 seconds being rounded up to 60 seconds.
Run Code Online (Sandbox Code Playgroud)

或者,为了确保ContentService占用我的间隔,当我将间隔更改为13秒时:

W/ContentService? Requested poll frequency of 13 seconds being rounded up to 60 seconds.
Run Code Online (Sandbox Code Playgroud)

有人知道这次回合的原因吗?

我的摩托罗拉XT搭载Android 5.0.2(Api等级22).

尝试使用模拟器Android 4.0.4(Api等级15),它只在没有日志消息的情况下执行相同的操作,而不是60秒,间隔更改为30秒.所以必须有一些我不知道的限制.

谢谢,如果需要更多信息,请与我们联系.

android intervals android-syncadapter

4
推荐指数
1
解决办法
2046
查看次数