安卓 : How to remove shared preferences in another package

标签 android android-intent android-emulator

在我的 android 应用程序中,我编写了代码以读取另一个 Android 应用程序的共享数据,然后从共享首选项中删除该数据。 我的代码如下:

try {

     con = createPackageContext("com.testapp.ws", 0);
     SharedPreferences pref = con.getSharedPreferences("demopref", Context.MODE_PRIVATE);
     ipAdr = pref.getString("demostring", "No Value");
     pref.edit().remove("demopref").commit();
   }

这显示以下错误:

06-12 11:52:07.400: E/ApplicationContext(3587): Couldn't rename file /data/data/com.testapp.ws/shared_prefs/demopref.xml to backup file /data/data/com.testapp.ws/shared_prefs/demopref.xml.bak

我在我的其他应用程序中使用此方法来制作共享数据

 public void shareData(){
    String strShareValue = ip;
    SharedPreferences prefs = getSharedPreferences("demopref",Context.MODE_WORLD_READABLE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("demostring", strShareValue);
    editor.commit();
}

我该怎么做?有什么要添加Manifest文件的吗?

谢谢!

最佳答案

如果您使用 android:sharedUserId在您的 list 文件中它应该可以工作。这是我自己遇到的权限问题。

为此,您只需在 标签中添加一个标签,例如 android:sharedUserId="com.example.you"您的两个应用程序的 code>AndroidManifest.xml 文件(当然,两个应用程序中的 com.example.you 必须相同)。

list 文件的示例开始:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="package.name"
    android:versionCode="1"
    android:versionName="1.0"
    android:sharedUserId="com.example.you" >
...

如需深入了解如何实现此功能,请参阅我在 How can I share a SharedPreferences file across two different android apps? 上的回答。

关于安卓 : How to remove shared preferences in another package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020853/

相关文章:

android - 读取特定密度的 mipmap 资源

java - 输出值返回为NULL,而不是存储在数据库表中的值

android - Bundle 在 Intent 中设置后为空

android - 如何在Android上接收推送时自动打开应用程序而无需用户操作

android-studio - Android 模拟器不适用于 Ubuntu 16.10

android - 如何使用 Monkeyrunner 卸载软件包?

android - 从模糊的android中排除 View

android - 捕获电子邮件验证单击并打开 android 应用程序

android - 安卓模拟器中的时区

Android SDK Manager 提示 "Loading SDK component information failed."