Android剪贴板管理器循环?
我正在为我的手机开发个人剪贴板应用程序(因为我可以:p),如果剪贴板上没有任何内容,我的应用程序就会崩溃。我添加了一个开关/案例,以查看它是否能够克服这一点,但事实并非如此。我想让我的程序在后台运行,让它在每次复制到剪贴板时显示toast消息。现在,我已经尝试将while循环与if语句一起使用,但仍然没有成功。这就是我目前所拥有的 编辑;修复了崩溃问题,我将剪贴板服务放在switch/case语句中,我的问题是每次复制文本时都会显示toast消息Android剪贴板管理器循环?,android,clipboard,Android,Clipboard,我正在为我的手机开发个人剪贴板应用程序(因为我可以:p),如果剪贴板上没有任何内容,我的应用程序就会崩溃。我添加了一个开关/案例,以查看它是否能够克服这一点,但事实并非如此。我想让我的程序在后台运行,让它在每次复制到剪贴板时显示toast消息。现在,我已经尝试将while循环与if语句一起使用,但仍然没有成功。这就是我目前所拥有的 编辑;修复了崩溃问题,我将剪贴板服务放在switch/case语句中,我的问题是每次复制文本时都会显示toast消息 package com.example.copy
package com.example.copytoclipboard;
import android.R;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@SuppressLint("NewApi")
public class MainActivity extends Activity {
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_item);
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
switch(R.id.copy){
case R.id.copy:
ClipboardManager clipboard =
(ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData abc = clipboard.getPrimaryClip();
ClipData.Item item = abc.getItemAt(0);
String text = item.getText().toString();
Context context = getApplicationContext();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
break;
}
}
}
“和我的应用程序崩溃”--使用LogCat检查与您的崩溃相关的Java堆栈跟踪。Commonware,我找到了它崩溃的原因,更新了我的代码。为了让您的应用程序知道剪贴板数据何时更改,您需要实现ClipboardManager的OnPrimaryClipChangedListener接口。如果你想让你的应用程序一直在后台运行,你需要创建一个服务。忘记更新我的SO,但我把它弄糊涂了,并添加了primaryclipchanged侦听器。