Android修改浏览器书签和首页

电脑杂谈  发布时间:2020-09-03 06:04:31  来源:网络整理

手机uc修改主页_如何修改手机自带浏览器主页&_谷歌浏览主页设置

这时,无论您是使用Back键退出还是手机自动重启,浏览器的缓存数据仍然存在. 然后问题来了. 如果要修改系统随附的浏览器主页,则必须首先找到一种清除浏览器数据的方法. 如何删除?与设置模块联系过的朋友将知道,长按APP菜单桌面的顶部将显示一个AppInfo,并将菜单放入后,窗口中将出现CLEARDATE信息. 顺便说一下,此功能按钮是用于清除数据的东西. 因此,输入设置后,请查看其处理方式. 进入设置搜索后,您会发现它实际上非常简单: 根据应用程序的程序包名称清除数据.

首先查看此方法:

private  void initiateClearUserData() {
       // Invoke uninstall or clear user data based on sysPackage
       String packageName = "com.android.browser";//系统自带浏览器的包名
       Log.i(TAG, "Clearing user data for package : " +packageName);
       if (mClearDataObserver == null) {
           mClearDataObserver = new ClearUserDataObserver();
       }
       ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
       boolean res = am.clearApplicationUserData(packageName,mClearDataObserver);
       
       if (!res) {
           // Clearing data failed for some obscure reason. Just log error fornow
           Log.i(TAG, "Couldnt clear application user data forpackage:"+packageName);
       }
    }

看到这种方法,我想您已经了解了,仅仅是这种方法吗?没有!您需要知道Android系统的保护机制非常好. 当您更改系统数据时,它将向您强加一条消息,即,如果数据被清除,则会发送广播通知系统. 看看这个ClearUserDataObserver()方法

class ClearUserDataObserver extends IPackageDataObserver.Stub{
       public voidonRemoveCompleted(final String packageName, final booleansucceeded) {
          finalMessage msg = mHandler.obtainMessage(CLEAR_USER_DATA);
          msg.arg1 =succeeded ? OP_SUCCESSFUL : OP_FAILED;
         mHandler.sendMessage(msg);
       }
    }

为什么使用CLEAR_USER_DATA标志位,然后查看代码

手机uc修改主页_谷歌浏览主页设置_如何修改手机自带浏览器主页&

public static final boolean showShutdownDialog = false;
    privatestatic final String TAG = "llcs";
    privateClearUserDataObserver mClearDataObserver;
    privatestatic final int CLEAR_USER_DATA = 1;
    privatestatic final int OP_SUCCESSFUL = 1;
    privatestatic final int OP_FAILED = 2;
    private Handler mHandler = new Handler() {
       public void handleMessage(Message msg) {
           // If the fragment is gone, don't process any more messages.
           
           Log.d(TAG, "handle message : " + msg.what);
           switch (msg.what) {
               case CLEAR_USER_DATA:
                   processClearMsg(msg);
                   break;
               
               default:
                   break;
           }
       }
    };
       private void processClearMsg(Message msg) {
       int result = msg.arg1;
       Log.i(TAG, "Cleared user data result:" + result);
       //String packageName = mAppEntry.info.packageName;
       String packageName = "com.android.browser";
       if(result == OP_SUCCESSFUL) {
           Log.i(TAG, "Cleared user data for package : "+packageName);
           //mState.requestSize(mAppEntry.info.packageName);
           // M ALPS00235193: send the clear success broadcast {@
           Intent packageDataCleared = newIntent(Intent.ACTION_SETTINGS_PACKAGE_DATA_CLEARED);
           packageDataCleared.putExtra("packageName", packageName);
           this.sendBroadcast(packageDataCleared);
           // @}
       } else {
           Log.i(TAG, "fail to clear user data for package : " +packageName);
       }
       //checkForceStop();
    }

好的,现在一切都已经明白了. 然后根据应用的程序包名称处理数据,最后通过广播发送清除成功消息. ACTION_SETTINGS_PACKAGE_DATA_CLEARED标志是清除了模块数据. 然后通过广播将其发送出去. 查看清理后,检查/data/data/com.android.browser下的内容,该内容将消失.

好!无需过多解释,只需调用initializeClearUserData()方法即可清除浏览器的缓存数据. 出于同样的原因,如果您想了解其他模块的数据,只需替换软件包名称即可. 清除缓存数据后,修改主页要容易得多. 我的方法是编写一个Settings.System.CHANGED_INTERNET,Settings.System.putString(MainActivity.this.getContentResolver(),Settings.System.CHANGED_INTERNET,“”);然后在浏览器中收到此字符串以替换原来的字符串.

注意: 此设置值需要由您自己定义. 定义的路径位于: frameworks / base / core / java / android / provider / Settings.java

第二个难题: 修改书签时同步更改书签缩略图的问题

此功能最初没有任何线索,尤其是书签缩略图的同步更改. 幸运的是,浏览器的是共享的,因此只需查找相应的字段即可轻松实现.

如何修改手机自带浏览器主页&_谷歌浏览主页设置_手机uc修改主页

首先让我们看一下如何添加书签: 假设此时已添加了百度书签

 private voidinsertBookMark() {
       Resourcesres = this.getResources();
       TypedArraypreloads = res.obtainTypedArray(R.array.bookmark_preloads);
      ContentValues inputValue = new ContentValues();
       //Bookmark值为1
      inputValue.put(Browser.BookmarkColumns.BOOKMARK, 1);
       //添加书签Title
      inputValue.put(Browser.BookmarkColumns.TITLE, "baidu");
       //添加书签URL
      inputValue.put(Browser.BookmarkColumns.URL,
            "http://www.baidu.com/");
       intfaviconId = preloads.getResourceId(0, 0);
       int thumbId = preloads.getResourceId(1, 0);
       byte[] thumb= null, favicon = null;
       try {
           thumb = readRaw(res, thumbId);
       } catch (IOException e) {
       }
       try {
           favicon = readRaw(res, faviconId);
       } catch (IOException e) {
       }
      inputValue.put(Browser.BookmarkColumns.FAVICON,
            favicon);
      //此为缩略图显示的图片
      inputValue.put(Browser.BookmarkColumns.THUMBNAIL,
            thumb);
       
       //向浏览器添加该书签
      ContentResolver contentResolver = getContentResolver();
      contentResolver.insert(Browser.BOOKMARKS_URI, inputValue);
      Toast.makeText(this, "添加成功!", Toast.LENGTH_LONG).show();
    }
   private byte[]readRaw(Resources res, int thumbId)throws IOException {
       if (thumbId == 0) {
            return null;
        }
        InputStream is = res.openRawResource(thumbId);
        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] buf = new byte[4096];
            int read;
            while ((read = is.read(buf)) > 0) {
                bos.write(buf, 0, read);
            }
            bos.flush();
            return bos.toByteArray();
        } finally {
            is.close();
        }
        //return null;
    }


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shumachanpin/article-312835-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 刘伟蒙
      刘伟蒙

      真来再戏耍它一番

    • 梁振峰
      梁振峰

      有十万的人根本不在乎那100元

    • 沈易熹
      沈易熹

      甲午海战北洋水师舰也不少

    热点图片
    拼命载入中...