android监听程序安装、卸载

来源:互联网 发布:数据安全应急预案 编辑:程序博客网 时间:2024/04/30 05:22

android监听其他程序的安装、卸载或者手动安装、卸载

完整代码:

public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/** * 注册监听,或者在AndroidManifest.xml中配置receive节点 *//*BroadcastReceiver installedReceiver = new BootReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.PACKAGE_ADDED"); filter.addAction("android.intent.action.PACKAGE_REMOVED"); filter.addDataScheme("package"); this.registerReceiver(installedReceiver, filter); */}public void install(View v){Log.i("安装应用ss","install");Log.e("sss", "aaaa");Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);File file = new File(Environment.getExternalStorageDirectory(),"Html.apk");intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");startActivity(intent);}public void uninstall(View v){String packageName ="com.example.unistallapplication";Log.i("卸载应用","卸载");if(checkPackage(packageName)){//packageInstall observer = new PackageInstallObserver();//pm.installPackage(mPackageURI, observer, installFlags);Intent intent = new Intent();intent.setAction(Intent.ACTION_DELETE);intent.setData(Uri.parse("package:com.example.testnotice"));startActivity(intent);}}public boolean checkPackage(String packageName){boolean flag=false;if(packageName=="" || "".equals(packageName))return false;try {getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);return true;} catch (Exception e) {Log.i("error","应用不存在");return false;}}

布局文件activity_main.xml:

<LinearLayout 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"    android:orientation="vertical" >     <Button         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="安装"        android:onClick="install"        />    <Button         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="卸载"        android:onClick="uninstall"        /></LinearLayout>

监听:

import android.support.v7.app.ActionBarActivity;import android.annotation.SuppressLint;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.webkit.WebView;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.pm.PackageManager;public class BootReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {PackageManager manager = context.getPackageManager();Log.i("这是监听事件:", "监听");if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {String packageName = intent.getData().getSchemeSpecificPart();Toast.makeText(context, "安装成功"+packageName, Toast.LENGTH_LONG).show();}if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {String packageName = intent.getData().getSchemeSpecificPart();Toast.makeText(context, "卸载成功"+packageName, Toast.LENGTH_LONG).show();}if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {String packageName = intent.getData().getSchemeSpecificPart();Toast.makeText(context, "替换成功"+packageName, Toast.LENGTH_LONG).show();}}}

AndroidManifest.xml:

<application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".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=".BootReceiver"  android:enabled="true">               <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>
红色的代码是注册监听事件,以上就是所有代码



原创粉丝点击