Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中删除一个应用程序与另一个应用程序的数据_Android - Fatal编程技术网

在android中删除一个应用程序与另一个应用程序的数据

在android中删除一个应用程序与另一个应用程序的数据,android,Android,我们可以在android中从另一个应用程序中清除或删除一个应用程序的数据吗。如果这是不可能的,请您建议任何棘手的方法来做到这一点,如进入内存中的文件夹,并删除该文件夹编程 谢谢。简单的回答 安卓系统的设计就是不可能做到这一点 但当使用root访问时,实际上可以从其他应用程序中删除文件夹 我相信,如果两个应用程序具有不同的包,但具有相同的签名,实际上可以访问彼此的私人文件夹。或者我不确定,我相信你可以在清单文件中添加某种声明,允许其他(朋友)应用程序访问你的私人文件夹。但我不确定我是否应该搜索它

我们可以在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
);