• android实现卸载提示


           这篇文章是整理的以前用过的一个功能,由于多种原因现在停用了,也希望这篇文章能帮助一些android入门的小童鞋。android是不提供监控卸载自己的功能的,这里使用了监控android日志的功能,android日志相关知识可以参考adb logcat 查看日志这篇文章。

            android卸载提示的思路是启动一个服务监控android系统的打印日志,当监控到"android.intent.action.DELETE"并且包含自己应用的包名时,提示给用户。

    监控代码

    public class AndroidLogcatScannerThread extends Thread {
        private LogcatObserver observer;
        public AndroidLogcatScannerThread(LogcatObserver observer) {
                this.observer = observer;
        }
    
        public void run() {
                String[] cmds = { "logcat", "-c" };
                String shellCmd = "logcat";
                Process process = null;
                InputStream is = null;
                DataInputStream dis = null;
                String line = "";
                Runtime runtime = Runtime.getRuntime();
                try {
                        observer.handleLog(line);
                        int waitValue;
                        waitValue = runtime.exec(cmds).waitFor();
                        observer.handleLog("waitValue=" + waitValue + "
     Has do Clear logcat cache.");
                        process = runtime.exec(shellCmd);
                        is = process.getInputStream();
                        dis = new DataInputStream(is);
                        while ((line = dis.readLine()) != null) {
                        	//Log.d("Log","Log.Bestpay:"+line);
                        	
                        	if(observer!=null)
                                observer.handleLog(line);  
                                
                        }
                } catch (InterruptedException e) {
                        e.printStackTrace();
                } catch (IOException ie) {
                        ie.printStackTrace();
                } finally {
                        try {
                                if (dis != null) {
                                        dis.close();
                                }
                                if (is != null) {
                                        is.close();
                                }
                                if (process != null) {
                                        process.destroy();
                                }
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                }
        }
    }

    监控服务:

    public class AndroidLogcatScannerService extends Service implements LogcatObserver{
    
    	@Override
    	public void onCreate() {
    		// TODO Auto-generated method stub
    		super.onCreate();
    	}
    
    	@Override
    	public void onDestroy() {
    		// TODO Auto-generated method stub
    		super.onDestroy();
    	}
    
    	@Override
    	public void onStart(Intent intent, int startId) {
    		// TODO Auto-generated method stub
    		super.onStart(intent, startId);
    		
    		AndroidLogcatScannerThread scannerThread=new AndroidLogcatScannerThread(AndroidLogcatScannerService.this);
    		scannerThread.start();
    	}
    
    	@Override
    	public IBinder onBind(Intent intent) {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	@Override
    	public void handleLog(String info) {
    		// TODO Auto-generated method stub
    		if (info.contains("android.intent.action.DELETE") && info.contains(getPackageName())) {
    
    	            Intent intent = new Intent();
    	            intent.setClass(AndroidLogcatScannerService.this, UninstallActivity.class);
    	            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    	            startActivity(intent);
            }
    	}
    
    }


    上面的代码基本实现了卸载提示,最后不要忘了权限:

    <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>


    代码下载地址:

    http://download.csdn.net/detail/xyz_lmn/4904797

    *  iOS入门群:83702688
    *  android开发进阶群:241395671
    *  我的新浪微博:@张兴业TBOW
    *  我的邮箱:xy-zhang#163.com#->@)
    */

     

  • 相关阅读:
    SVN报错working copy is not uptodate
    AndroidStudio中获得的VersionCode一直为1和VersionName一直为1.0
    OkHttp
    MockWebServer使用指南(转载)
    Android的Toolbar(含溢出菜单设置[弹出菜单的使用])的使用PopMenu的样式
    8-13笔记-安卓兼容
    自定义Dialog
    安卓圆角Button XML文件
    递归方法扫面文件夹(JAVA控制台程序)
    8月12笔记-安卓文件扫描
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168075.html
Copyright © 2020-2023  润新知