題:
CM13骯髒地閃爍後,“ com.android.phone已停止”
friederbluemle
2015-11-25 23:11:25 UTC
view on stackexchange narkive permalink

在將我的OnePlus One(培根)從CM12.1閃爍到CM13之後,我不斷彈出強制關閉對話框

 不幸的是,com.android.phone進程已停止 

Logcat充滿了這樣的堆棧跟踪:

 關閉VMFATAL EXCEPTION:mainProcess:com.android.phone,PID:13148java.lang.RuntimeException:無法獲取provider com.android.providers.telephony.TelephonyProvider:java.lang.IllegalStateException:無法從CursorWindow讀取行0,col -1。在訪問游標之前,請確保游標已正確初始化。在android.app.ActivityThread.installContentProviders(ActivityThread.java:4797)在android.app.ActivityThread.installContentProviders(ActivityThread.java:4797)在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4737)在android.app。位於android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1424)的ActivityThread.wrap1(ActivityThread.java),位於android.os.Looper.loop(android.os.Handler.dispatchMessage(Handler.java:102) Looper.java:148),位於android.app.ActivityThread.main(ActivityThread.java:5466),位於java.lang.reflect.Method.invoke(本機方法),位於com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run( com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)上的ZygoteInit.java:726)原因:java.lang.IllegalStateException:無法從CursorWindow讀取行0,col -1。在訪問游標之前,請確保游標已正確初始化。在android.database.CursorWindow.nativeGetString(本機方法)在android.database.CursorWindow.getString(CursorWindow.java:438)在android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)在com.android.providers.telephony .com.android.providers.telephony.TelephonyProvider $ DatabaseHelper.copyPreservedApnsToNewTable(TelephonyProvider.java:905)上的.TelephonyProvider $ DatabaseHelper.getStringValueFromCursor(TelephonyProvider.java:993)
在com.android.providers.telephony.TelephonyProvider $ DatabaseHelper.onUpgrade(TelephonyProvider.java:641)在android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:256)在android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpen com.android.providers.telephony.TelephonyProvider.onCreate(TelephonyProvider.java:1457)上的.java:187)android.content.ContentProvider.attachInfo(ContentProvider.java:1748)上的android.content.ContentProvider.attachInfo(ContentProvider。 java:1723),位於android.app.ActivityThread.installProvider(ActivityThread.java:5202)...還有10個 

一旦我以某種方式擺脫了持久性UI彈出窗口,似乎 com.android.phone 每秒至少崩潰10次,淹沒了logcat,幾乎無法使用手機。

是否有希望進行修復,或者硬重置是唯一的選擇嗎?

請清除“ com.android.providers.telephony”的數據(應用程序的標籤為“ Phone / Telephony storage / providers”)。當您在使用它時,也可以對Phone應用程序(`com.android.phone`)進行操作,重新啟動並告訴我們結果。看來無法讀取`com.android.providers.telephony`數據庫。您可能無法清除這些應用程序的數據。在這種情況下,請從地球上刪除其/ data / data目錄。
清除緩存(從恢復中)可能會有所幫助
我試圖在根模式下使用Total Commander刪除這些文件夾。我設法刪除了,但沒有幫助。我也重新啟動了:(我不能給任何人打電話...
五 答案:
Aaahh
2015-11-26 13:27:53 UTC
view on stackexchange narkive permalink

這是因為代碼中的更改。

如Firelord所說,清除應用程序的數據,可以這樣做(這也會刪除您的SMS / MMS數據庫,因此請確保事先備份它們):

  adb shellrm -fr /data/data/com.android.providers.telephony/rm -fr / data / data / com.android.phone/exit 

-f標誌用於強制,-r標誌表示遞歸。

可行!謝謝。我還在我的logcat中註意到這一行:`TelephonyProvider:dbh.onUpgrade:+ db = SQLiteDatabase:/data/user/0/com.android.providers.telephony/databases/telephony.db oldV = 1114120 newV = 1376264`數據目錄和重新啟動後,強制關閉對話框停止。數據庫中有什麼?我注意到我所有的短信都消失了。還要別的嗎?
**讀者:**確保刪除這些目錄後重新啟動設備。
有趣的是,無法從“應用程序”菜單中刪除數據。我需要重新啟動到TWRP並在那裡刪除文件夾(第一個就足夠了)
此方法不適用於Cyanogenmod 14 / Android 7
@Adem 11月,日誌記錄是什麼?
我清除了cm14並重新安裝了cm13,因為cm14對我來說還沒有完成。在cm13上,一切對我來說都很好。
@Adem數據庫可能已移動http://android.stackexchange.com/a/155895/136434
Sebastian Schrader
2016-01-27 05:43:20 UTC
view on stackexchange narkive permalink

從CM12.1升級到CM13時,我遇到了同樣的問題。您可以解決此問題而無需刪除數據庫文件,因此也可以按照其他答案中的建議丟失數據。

罪魁禍首似乎是CM TelephonyProvider中的 onUpgrade代碼數據庫損壞。 carriers表的 ppp_number 列不存在,但是升級代碼假定它已經存在。

我通過將telephony.db複製到本地Linux機器並還原來解決了該問題。數據庫版本到版本 16 << 16 | 6 = 1048582 強制升級代碼添加缺少的列。鏈接代碼中的 ALTER TABLE 語句由try-catch-blocks保護,因此某些列是否已存在都沒有關係。將電話引導到恢復狀態(例如TWRP)以具有adb根特權,並避免與Android Runtime進行鎖競爭,而Android Runtime一直在嘗試啟動電話提供商。

 %adb pull / data / user / 0 / com.android.providers.telephony / databases / telephony.db%adb pull /data/user/0/com.android.providers.telephony/databases/telephony.db-journal

創建備份

 %cp telephony.db telephony.db.bak%cp telephony.db-journal telephony.db-journal.bak  

然後打開使用sqlite數據庫並設置版本

 %sqlite3 telephony.dbsqlite> PRAGMA user_version = 1048582; sqlite> .quit  

將更改後的數據庫上傳回設備並修復權限

 %adb push telephony.db /data/user/0/com.android.providers.telephony/databases% adb shell〜#cd / data / user / 0 / com。 android.providers.telephony / databases / data / data / com.android.providers.telephony / databases#rm telephony.db-journal / data / data / co m.android.providers.telephony / databases#chown radio:radio telephony.db / data / data / com.android.providers.telephony / databases#chmod 660 telephony.db  

您也可以在損壞的系統上嘗試此操作,我不建議這樣做。為了使用 adb 複製和修改文件,您可能必須成為 adb root 的root用戶。

注重細節!對此表示讚賞。像@gedenkt,一樣,我也遵循這些說明,但是它們對我也不起作用。 :-/只需刪除這兩個`* .db *`文件就可以解決問題。
您可以使用“ vacuum”命令將日誌合併到數據庫。 `$ sqlite3 telephony.db VACUUM`
gedenkt
2016-03-25 23:47:04 UTC
view on stackexchange narkive permalink

我嘗試了塞巴斯蒂安(Sebastian)的解決方案,但錯誤仍然存在。可接受的答案導致您丟失所有SMS,因此對我來說不是一個選擇。但是,進入恢復模式並刪除文件後

  /data/data/com.android.providers.telephony/databases/telephony.db/data/data/com.android.providers.telephony/databases/telephony.db-journal  

電話再次正常工作。這些文件似乎只包含自動生成的數據,因此可以刪除它們。

如何在恢復模式下刪除某些文件?
@Hinrich如果使用TWRP之類的功能齊全的恢復,則可以使用內置文件管理器。
這是有關TWRP的更多詳細信息。就我而言,我正在運行Safestrap 3.75(TWRP v2.7.1.0),必須使用“安裝”按鈕,然後選擇“數據”,然後返回,然後使用“高級”按鈕來使用“文件管理器”按鈕(然後從“數據”文件夾開始導航)。
Bossdwarf
2016-01-15 18:56:49 UTC
view on stackexchange narkive permalink

如果由於無法使用而無法進入adb shell或從電話中刪除目錄,則還可以從TWRP恢復中刪除目錄。

請在回答中添加必要的說明。如果OP沒有TWRP怎麼辦?
Hinrich
2016-05-09 12:14:06 UTC
view on stackexchange narkive permalink

從CM12更新到CM13後具有相同的問題。這是解決問題的方法:

我刪除了這兩個目錄

  /data/user/0/com.android.providers.telephony/data/data /com.android.phone /  

完全通過我的手機(Nexus 5)完成。我使用 ES Explorer 這樣做,我必須打開 Root Mode Show Hidden Files 才能刪除該目錄中的文件。

呼叫日誌和SMS仍然存在,看不到刪除這些目錄所帶來的任何不利影響。一切似乎再次恢復正常。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...