【问题标题】:broadcast receiver doesn't work when my application is NOT running当我的应用程序未运行时,广播接收器不起作用
【发布时间】:2018-01-24 12:19:07
【问题描述】:

我的广播接收器工作但仅在我的应用程序运行时... 当我关闭程序时,广播接收器将不再工作。

我的代码:

GetClipboard.java

public class GetClipboard extends BroadcastReceiver{

    @Override
    public void onReceive(final Context context, Intent intent) {

        Bundle bundle=intent.getExtras();
        if (bundle!=null) {
            try {

                final ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);
                assert clipboardManager != null;
                clipboardManager
                        .addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {

                            @Override
                            public void onPrimaryClipChanged() {
                                ClipData clipData = clipboardManager.getPrimaryClip();
                                final String data = clipData.getItemAt(0).getText().toString();
                                Toast.makeText(context,data, Toast.LENGTH_LONG).show();
                            }
                        });
            } catch (Exception e) {
                Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();

            }
        }
    }
}

AndroidManifest.xml

 <receiver android:name=".GetClipboard">
    <intent-filter>
        <action android:name="android.content.Context.CLIPBOARD_SERVICE" />
    </intent-filter>
    </receiver>

MainActivity.java

public class MainActivity extends AppCompatActivity {

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

}

build.gradle

compileSdkVersion 27
minSdkVersion 19
targetSdkVersion 27

【问题讨论】:

标签: java android broadcast


【解决方案1】:

BroadCastReceivers 生命周期仅在应用程序存在时才存在。如果您关闭应用程序,它将无法正常工作。如果您想在应用关闭时收到通知,请调查AlarmManagers

【讨论】:

  • 那么当我的应用程序未运行时,我应该如何理解在剪贴板中复制的内容或接收短信时
  • PushNotifications 可能吗?剪贴板更改我认为您需要使用服务。检查它:stackoverflow.com/questions/22277598/…
  • 我的应用程序只会运行一次,永远不会打开..必须在后台工作,可以永远启动一次服务吗?我想收到短信,剪贴板服务,来电,去电..
【解决方案2】:

您可以使用service 运行应用程序关闭/后台。因为取消绑定接收器

参考此示例

https://stackoverflow.com/a/16824692/3505534

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多