簡體   English   中英

Android內容提供商授權字符串的字符串長度錯誤

[英]String length errors with an Android Content Provider Authority string

內容提供者授權的原始名稱,可以正常工作且沒有錯誤:

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工具22.6.3,API 19,ABS庫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工具>重命名應用程序包來更改名稱。 這是我更改名稱時遇到的錯誤。

相應地為清單中的提供者更新android:authorities標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM