【发布时间】: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
【问题讨论】:
-
这是预期的行为
-
请注意,针对 api 级别 26 或更高级别的应用程序无法再注册隐式广播接收器 - developer.android.com/about/versions/oreo/background.html