android – 获取设备网络网址调用

前端之家收集整理的这篇文章主要介绍了android – 获取设备网络网址调用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试构建一个应用程序,为用户提供有关其网络使用情况的统计信息,

从3G / Wifi冲浪到应用网络使用.

我正在寻找的主要重要数据是网络呼叫的网址.

我有下一个代码,找到浏览器历史记录:

private void getBrowserHistory()
{
    String[] proj = new String[]{Browser.BookmarkColumns.TITLE,Browser.BookmarkColumns.URL};
    String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history,1 = bookmark
    Cursor mCur = this.managedQuery(Browser.BOOKMARKS_URI,proj,sel,null,null);
    this.startManagingCursor(mCur);
    mCur.moveToFirst();

    if (mCur.moveToFirst() && mCur.getCount() > 0)
    {
        while (mCur.isAfterLast() == false)
        {
            String title = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.TITLE));
            String url = mCur.getString(mCur.getColumnIndex(Browser.BookmarkColumns.URL));
            Log.d(LOG_TAG,"Site title: " + title);
            Log.d(LOG_TAG,"Site url: " + url);
            mCur.moveToNext();
        }
    }
}

但要找到应用程序网络使用情况,我需要更像WireShark的东西

我认为该问题的最终解决方案很复杂,但欢迎任何建议.

最佳答案
如果像您所说的那样,您正在处理有根设备,则可以将监视应用程序设置为默认系统代理.

这样,通过充当transparent proxy,您将能够检测进入和离开连接.

我从哪里开始?

如果你想看看一个可能的实现,你可以试试ProxyDroid,这是开源的,绝对是一个很好的起点.

你应该做什么

您需要做的是触发一些iptables命令,以便将您的应用程序设置为系统代理:here您可以看到ProxyDroid如何做到这一点.

然后,您的应用程序将侦听连接请求,执行它们并相应地发送响应:同样,this是一个非常基本的示例,说明整个事情在您的应用程序方面是如何工作的.

猜你在找的Android相关文章