小编Mic*_*rov的帖子

在android服务中检测'home button pressed'事件,显示一个UI(类似于facebook chatheads)

在facebook chatheads中,这是facebook messenger应用程序的一部分,我注意到以下行为:据我所知,聊天头本身和打开的聊天屏幕都是服务的一部分.不涉及任何活动.

我怎么能确定?在我打开的聊天屏幕上按回家后,它被最小化回聊天头,我可以立即重新打开聊天屏幕.如果聊天屏幕是活动,则startActivity(intent)在按下主页按钮后重新打开活动将延迟活动的开始,如此处所指定: 在按下HOME按钮后从服务启动活动而没有延迟5秒

在这里:按下主页按钮显示活动5秒延迟的原因?

在我的服务onCreate方法中,我使用以下代码从服务中显示UI:

public class ServiceTest extends Service {
...
    @Override 
    public void onCreate() {
        super.onCreate();

        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

        windowManager.addView(someView, params);
    }
....
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何直接从显示用户界面的服务接收"按下主页按钮"事件?当用户按下主页按钮时,我想最小化我的视图(类似于Facebook聊天头).

service user-interface android

27
推荐指数
3
解决办法
1万
查看次数

绑定客户端断开连接时通知Android服务

我在远程进程中有一个android服务,可以有来自不同客户端的多个绑定.我的问题是,当特定绑定客户端意外断开连接时(即客户端崩溃),如何通知服务?我无法使用onUnbind(),因为只有在所有客户端断开连接后才会调用它.

public class MyService extends Service {

    final Messenger mServiceMessenger = new Messenger(new IncomingHandler());

    @Override
    public IBinder onBind(Intent intent) {
        return mServiceMessenger.getBinder();
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return Service.START_STICKY;
    }

    class IncomingHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
        // Handling messages logic...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java service client android bind

10
推荐指数
2
解决办法
2775
查看次数

在Android浏览器中获取当前URL

我正在寻找一种方法来获取用户在Android浏览器应用程序上访问的当前URL.我发现我可以Browser.BOOKMARKS_URI使用以下技术从数据库中获取最后访问过的URL :

Cursor cursor = context.getContentResolver().query(Browser.BOOKMARKS_URI,
        Browser.HISTORY_PROJECTION, null, null,
        Browser.BookmarkColumns.DATE + " DESC");
cursor.moveToNext();
String url = cursor.getString(Browser.HISTORY_PROJECTION_URL_INDEX);
cursor.close();
Run Code Online (Sandbox Code Playgroud)

这样做的问题是,Browser.BOOKMARKS_URI当用户按下以便导航到浏览器中的上一页时,db不会更新,并且查询返回不正确的结果.

请参阅以下示例:

  1. 用户导航到www.google.com - > 查询返回"www.google.com"
  2. 用户导航到www.imdb.com - > 查询返回"www.imdb.com"
  3. 用户按下返回www.google.com - > 查询返回"www.imdb.com"(!!)

有没有人知道如何返回用户正在查看的正确网址?

java url android browser-history android-browser

7
推荐指数
1
解决办法
3648
查看次数