Android利用廣播監聽設備安裝和卸載應用程序

jopen 11年前發布 | 62K 次閱讀 Android Android開發 移動開發

MainActivity如下:

    package cn.testappaddandremove;

import android.os.Bundle;  
import android.app.Activity;  
import android.content.IntentFilter;  
/** 
 * Demo描述: 
 * 利用廣播監聽設備安裝和卸載應用程序 
 *  
 * 參考資料: 
 * http://blog.csdn.net/wangjinyu501/article/details/9664315 
 * Thank you very much 
 */  
public class MainActivity extends Activity {  
    private AppBroadcastReceiver mAppBroadcastReceiver;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
    }  
    @Override  
    protected void onStart() {  
        super.onStart();  
//      //方式一:在代碼中設置IntentFilter  
//      mAppBroadcastReceiver=new AppBroadcastReceiver();  
//      IntentFilter intentFilter=new IntentFilter();  
//      intentFilter.addAction("android.intent.action.PACKAGE_ADDED");  
//      intentFilter.addAction("android.intent.action.PACKAGE_REMOVED");  
//      intentFilter.addDataScheme("package");  
//      this.registerReceiver(mAppBroadcastReceiver, intentFilter);  

        //方式二:在Manifest.xml中設置IntentFilter  
        //       測試發現方式二效果更好些  
        mAppBroadcastReceiver=new AppBroadcastReceiver();  
        IntentFilter intentFilter=new IntentFilter();  
        this.registerReceiver(mAppBroadcastReceiver,intentFilter);  
    }  
    @Override  
    protected void onDestroy() {  
        if (mAppBroadcastReceiver!=null) {  
            this.unregisterReceiver(mAppBroadcastReceiver);  
        }  
        super.onDestroy();  
    }  
}  </pre>AppBroadcastReceiver如下:<pre class="brush:java; toolbar: true; auto-links: false;">    package cn.testappaddandremove;  

import android.content.BroadcastReceiver;  
import android.content.Context;  
import android.content.Intent;  

public class AppBroadcastReceiver extends BroadcastReceiver {  
    private final String ADD_APP ="android.intent.action.PACKAGE_ADDED";  
    private final String REMOVE_APP ="android.intent.action.PACKAGE_REMOVED";  
    @Override  
    public void onReceive(Context context, Intent intent) {  
        String action=intent.getAction();  
        if (ADD_APP.equals(action)) {  
            String packageName=intent.getDataString();  
            System.out.println("安裝了:"+packageName);  
        }  
        if (REMOVE_APP.equals(action)) {  
            String packageName=intent.getDataString();  
            System.out.println("卸載了:"+packageName);  
        }  
    }  

}  </pre>Manifest.xml如下:<pre class="brush:xml; toolbar: true; auto-links: false;">    <?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="cn.testappaddandremove"  
    android:versionCode="1"  
    android:versionName="1.0" >  

    <uses-sdk  
        android:minSdkVersion="8"  
        android:targetSdkVersion="8" />  

    <application  
        android:allowBackup="true"  
        android:icon="@drawable/ic_launcher"  
        android:label="@string/app_name"  
        android:theme="@style/AppTheme" >  
        <activity  
            android:name="cn.testappaddandremove.MainActivity"  
            android:label="@string/app_name" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  

                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  

        <receiver android:name="cn.testappaddandremove.AppBroadcastReceiver">  
            <intent-filter >  
                <action android:name="android.intent.action.PACKAGE_ADDED" />    
                <action android:name="android.intent.action.PACKAGE_REMOVED" />    
                <data   android:scheme="package" />   
            </intent-filter>  
        </receiver>  

    </application>  

</manifest>  </pre>main.xml如下:<pre class="brush:xml; toolbar: true; auto-links: false;">    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    >  

    <TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="監聽應用程序的安裝和卸載"  
        android:layout_centerInParent="true"  
    />  

</RelativeLayout>  </pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!