安卓工程修改包名后 Failed to find provider info for...问题

时间:2021-12-03 21:56:19

安卓工程修改包名后 Failed to find provider info for com.android...provider问题

原因:

1. 多处含包名文件须同时更改

2. Manifest里<provider />的设置问题

解决办法:

1. 右键修改包名之前取消 Project -> Build Automatica 选项

2. 工程名的修改:右键工程 Android Tools -> rename application package

(以上完成后勾选 Project -> Build Automatica 选项,并Clean)

3. Manefest里:

        <provider
android:name="com.uustudio.unote.provider.NotepadProvider"
android:authorities="com.uustudio.unote.provider"
android:exported="false">
</provider>

其中authrities不会自动修改,须手动检查并修改,它是授权常量的声明,须在src找到常量申明的java文件,手动修改其值,使与 android:authorities="com.uustudio.unote.provider" 保持一致。

/**授权常量*/
public static final String AUTHORITY="com.uustudio.unote.provider";

android:exported="false"为只在本应用内部数据库调用,若要开放,改为true后可添加:tools:ignore,同时在Manifest标签中申明<manifest ... xmlns:tools="http://schemas.android.com/tools" ...>

<provider
tools:ignore="ExportedContentProvider"
android:exported="true"
android:name="Contentprovider"
android:authorities="umb.con.apps.vid" />

该方法参考:http://*.com/questions/13448480/exported-content-providers-can-provide-access-to-potentially-sensitive-data