使用Android Content Provider Authority字符串的字符串长度错误

时间:2014-05-14 17:15:09

标签: android eclipse android-contentprovider runtimeexception string-length

内容提供商权限的原始名称,可以正常运行且没有错误:

public static final String AUTHORITY = com.dakotastream.cardiologger.CardioLoggerProvider12;


我想将我的权限重命名为:

public static final String AUTHORITY = com.dakotastream.cardiologger.CardioLoggerProvider;

当我将名称更改为上面时,我收到此错误。

引起:java.lang.StringIndexOutOfBoundsException:length = 68;指数= 70


public static final String AUTHORITY = com.dakotastream.cardiologger.CardioLoggerProvider1;

当我将名称更改为上面时,我收到此错误。

引起:java.lang.StringIndexOutOfBoundsException:length = 69;指数= 70


如果我将包重命名为com.dakotastream.cardiologger12,那么我可以使用

public static final String AUTHORITY = com.dakotastream.cardiologger12.CardioLoggerProvider; 没有错误。


管理局似乎要求字符串长度大于69个字符。

我使用的是SDK Tools 22.6.3,API 19,ABS Library 4.4.0

我尝试过创建一个新的Android应用程序项目并删除代码。我得到同样的错误。


整个LogCat转储:

FATAL EXCEPTION: ModernAsyncTask #1
Process: com.dakotastream.cardiologger, PID: 1344
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.support.v4.content.ModernAsyncTask$3.done(ModernAsyncTask.java:137)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.StringIndexOutOfBoundsException: length=68; index=70
at java.lang.String.indexAndLength(String.java:584)
at java.lang.String.substring(String.java:1449)
at com.dakotastream.cardiologger.DbContentProvider.query(DbContentProvider.java:279)
at android.content.ContentProvider.query(ContentProvider.java:857)
at android.content.ContentProvider$Transport.query(ContentProvider.java:200)
at android.content.ContentResolver.query(ContentResolver.java:461)
at android.content.ContentResolver.query(ContentResolver.java:404)
at android.support.v4.content.CursorLoader.loadInBackground(CursorLoader.java:49)
at android.support.v4.content.CursorLoader.loadInBackground(CursorLoader.java:35)
at android.support.v4.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:242)
at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:51)
at android.support.v4.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:40)
at android.support.v4.content.ModernAsyncTask$2.call(ModernAsyncTask.java:123)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)

在Eclipse中,我使用Android工具>重命名应用程序包来更改名称。 这是我更改名称时收到的错误。

1 个答案:

答案 0 :(得分:1)

相应地更新清单中提供商的android:authorities标签。