Android: всплывающее окно чата - PullRequest
2 голосов
/ 28 июля 2011

Я разрабатываю приложение чата. Я хочу показать всплывающее окно, когда кто-то отправляет сообщение пользователю, подобному этому http://code.google.com/p/android-smspopup/. также есть опорная картинка https://market.android.com/details?id=com.blntsoft.emailpopup

Кто-нибудь знает, как это работает? Это будет показано в нативном приложении или в другом приложении. Пожалуйста, предоставьте мне ссылку для справки. Я использую сервис для веб-сервисов звонков. Так сервис вызовет всплывающее окно.

Спасибо.

Ответы [ 2 ]

10 голосов
/ 28 июля 2011

Насколько мне известно, вы не можете открыть диалог из службы.Но у вас есть одна возможность открыть всплывающее окно из службы для этого

1) Создать макет всплывающего окна.

2) Создать в действии и установить макет как представление содержимого в этом занятии

3) В манифесте вы должны написать это

 <activity android:theme="@android:style/Theme.Dialog">

4) Из службы вы должны вызывать это действие, когда хотите открыть всплывающее окно. Но имейте в виду, что из службы вы должны установитьфлаг намерения как

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

теперь вы можете открыть свою деятельность в виде всплывающего окна.

РЕДАКТИРОВАТЬ

1) Макет main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<EditText  android:id="@+id/web"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
<EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
    <EditText 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
</LinearLayout>

2) test2.java, который будет действовать как всплывающее окно

package com.example.AutocompleteTextView;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class Test2 extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

3) Файл Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.AutocompleteTextView" android:versionCode="1"
    android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".CustomAutoComplete" android:label="@string/app_name">
        </activity>

        <activity android:name="test1">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="Test2" android:theme="@android:style/Theme.Dialog">
        </activity>
        <service android:name="MyService"></service>
    </application>
</manifest> 

4) Сервис MyService.java

package com.example.AutocompleteTextView;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.IBinder;

public class MyService extends Service{

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

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        Intent intent1 = new Intent(this, Test2.class);
        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent1);


    }
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

}

это действие, с которого я запускаю службу

package com.example.AutocompleteTextView;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.FrameLayout;

public class test1 extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
        startService(new Intent(getApplicationContext(), MyService.class));
        finish();

    }
}
0 голосов
/ 17 сентября 2014

Только что добавлено

android.permission.SYSTEM_ALERT_WINDOW

разрешение в манифесте, и теперь я могу показать предупреждение от службы.

...