2017-03-06 18 views
0

我搜索了很多並找不到,是否可以收聽應用的清除數據事件?但!不是爲我自己的應用程序,然後爲Google Play服務應用程序?是否有可能註冊某種事件?清除其他應用的數據事件

+0

不是。這是不可能的。這些功能在Android API中不提供。 – Budius

回答

1

您可以通過向您的BroadcastReceiver添加android.intent.action.PACKAGE_DATA_CLEARED動作和package方案來收聽其他應用程序的廣播清除。

的AndroidManifest.xml例如:

String action = intent.getAction(); 
if (Intent.ACTION_PACKAGE_DATA_CLEARED.equals(action)) { 
    Integer uid = intent.getIntExtra(Intent.EXTRA_UID, Integer.MIN_VALUE); 
    String packageName = context.getPackageManager().getNameForUid(uid); 
} 

或本:

String action = intent.getAction(); 
Uri data = intent.getData(); 
if (Intent.ACTION_PACKAGE_DATA_CLEARED.equals(action) && data != null) { 
    String packageName = data.getSchemeSpecificPart(); 
} 

正如你已經

<receiver 
    android:name=".PackageDataClearedReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" /> 
     <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

對於從意向獲取數據,在廣播接收器使用在你的問題中提到,不可能聽清包裝廣泛施放你自己的應用程序。

1

嘗試收聽廣播意圖

android.intent.action.PACKAGE_DATA_CLEARED

1

我設法找到一個解決辦法,7383的答案是不完整的,它添加重要的scheme="package"

<action android:name="android.intent.action.PACKAGE_DATA_CLEARED" /> 
<android:scheme="package" /> 

並在您的BroadcastReceiver中獲得包裹信息intent.getData()

+1

你從我的答案中得到了進一步的解決方案,你應該提高我的答案,因爲它沒有錯。我提供解決方案的方式是指出正確的事情,但不要提供解決方案。 – 7383