在android中删除一个应用程序与另一个应用程序的数据
我们可以在android中从另一个应用程序中清除或删除一个应用程序的数据吗。如果这是不可能的,请您建议任何棘手的方法来做到这一点,如进入内存中的文件夹,并删除该文件夹编程 谢谢。简单的回答 安卓系统的设计就是不可能做到这一点 但当使用root访问时,实际上可以从其他应用程序中删除文件夹 我相信,如果两个应用程序具有不同的包,但具有相同的签名,实际上可以访问彼此的私人文件夹。或者我不确定,我相信你可以在清单文件中添加某种声明,允许其他(朋友)应用程序访问你的私人文件夹。但我不确定我是否应该搜索它 搜索后编辑: 具有相同的在android中删除一个应用程序与另一个应用程序的数据,android,Android,我们可以在android中从另一个应用程序中清除或删除一个应用程序的数据吗。如果这是不可能的,请您建议任何棘手的方法来做到这一点,如进入内存中的文件夹,并删除该文件夹编程 谢谢。简单的回答 安卓系统的设计就是不可能做到这一点 但当使用root访问时,实际上可以从其他应用程序中删除文件夹 我相信,如果两个应用程序具有不同的包,但具有相同的签名,实际上可以访问彼此的私人文件夹。或者我不确定,我相信你可以在清单文件中添加某种声明,允许其他(朋友)应用程序访问你的私人文件夹。但我不确定我是否应该搜索它
android:sharedUserId
和android:sharedUserLabel
和签名的应用程序可以访问彼此的私人文件
编辑2:
android API中有一些私有方法,我认为它们可以用来清除应用程序数据。我不确定,但如果您在清单文件中以正确的权限反映这些方法,则可以清除应用程序数据,但我不能100%确定
一些小示例代码:
Method clearApplicationUserData = getReflectedMethod("clearApplicationUserData", String.class, IPackageDataObserver.class);
我用的方法是让它反映出来
private Method getReflectedMethod(String methodname, Class<?>... args) {
Method temp = null;
try {
temp = pm.getClass().getMethod(methodname, args);
} catch (SecurityException e) {
return null;
} catch (NoSuchMethodException e) {
return null;
}
return temp;
}
数据助手是扩展IPackageDataObserver.Stub
类的任何类
你可以在stackoverflow上找到很多关于反射方法的问题
我不知道这是否有效,但这是我能想到的唯一方法
Rolf如果它存储在数据库中,您可以使用内容提供商通过以下方法删除数据
mRowsDeleted = getContentResolver().delete(
UserDictionary.Words.CONTENT_URI, // the user dictionary content URI
mSelectionClause // the column to select on
mSelectionArgs // the value to compare to
);
按照方法去做这个问题不是很清楚 你的意思是你的应用程序将从其他人的应用程序中删除数据吗?答案是“视情况而定”。首先,如果数据在SD卡上,您可以访问并删除它。如果数据位于应用程序专用数据区域,则除非您的手机已根目录,否则无法执行此操作 如果问题中的应用程序都是你自己制作的,答案是肯定的,这是可能的。您必须在每个应用程序的清单文件中使用
android:sharedUserId
属性,使它们相同,并使用相同的密钥对两个应用程序进行签名。这将允许应用程序访问彼此的数据
如果您所说的数据在设备SD卡上,则可以。如果在内部存储器中,则为否(除非您同时创建了两个应用程序并使用了我想执行与单击“管理应用程序中的清除数据”时执行的操作相同的操作。我没有找到IPackageDataObserver类。
mRowsDeleted = getContentResolver().delete(
UserDictionary.Words.CONTENT_URI, // the user dictionary content URI
mSelectionClause // the column to select on
mSelectionArgs // the value to compare to
);