Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的JobService在Android 10中不工作,但在Android 9及更低版本中工作良好_Android_Android Studio_Android Jobscheduler - Fatal编程技术网

我的JobService在Android 10中不工作,但在Android 9及更低版本中工作良好

我的JobService在Android 10中不工作,但在Android 9及更低版本中工作良好,android,android-studio,android-jobscheduler,Android,Android Studio,Android Jobscheduler,我正在创建一个Android应用程序,当应用程序在后台运行时,当用户从系统复制到剪贴板时,它会发送一个通知。为此,我使用了JobService。但是我的JobService在Android 10和更高版本中不工作,但在Android 9和更低版本中工作良好 以下是我的ClipboardJobService java类: public class ClipboardJobService extends JobService { private static final String TAG = &

我正在创建一个Android应用程序,当应用程序在后台运行时,当用户从系统复制到剪贴板时,它会发送一个通知。为此,我使用了JobService。但是我的JobService在Android 10和更高版本中不工作,但在Android 9和更低版本中工作良好

以下是我的ClipboardJobService java类:

public class ClipboardJobService extends JobService {
private static final String TAG = "ClipboardJobService";
private static final String CHANNEL_ID = "clipboard_copy_event";
private static final String CHANNEL_NAME = "Clipboard Copy Event";
private static final int NOTIFICATION_ID = 2342;
private NotificationManager notificationManager;
private ClipboardManager clipboardManager;

@Override
public boolean onStartJob(JobParameters params) {
    notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    clipboardManager.addPrimaryClipChangedListener(mOnPrimaryClipChangedListener);

    Log.e(TAG, "onStartJob: Service Started" );
    return false;
}

@Override
public boolean onStopJob(JobParameters params) {
    Log.e(TAG, "onStopJob: Service finished" );
    return true;
}

private void createNotificationChannel() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT);
        channel.setName("Jobless Joker");
        channel.setDescription("Go To ClipboardServiceExample App");

        notificationManager.createNotificationChannel(channel);
    }
}

private NotificationCompat.Builder getNotificationBuilder() {
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, CHANNEL_ID);
    notificationBuilder.setContentTitle("InstaLoader");
    notificationBuilder.setContentText("This is Description");
    notificationBuilder.setAutoCancel(true);
    notificationBuilder.setSmallIcon(R.drawable.ic_launcher_background);

    return notificationBuilder;
}

private ClipboardManager.OnPrimaryClipChangedListener mOnPrimaryClipChangedListener =
        new ClipboardManager.OnPrimaryClipChangedListener() {
            @Override
            public void onPrimaryClipChanged() {
                //Create notification channel
                createNotificationChannel();
                //Create Notification builder
                NotificationCompat.Builder notifyBuilder = getNotificationBuilder();
                if (clipboardManager != null)
                    notifyBuilder.setContentText(clipboardManager.getPrimaryClip().getItemAt(0).getText());
                //Notify to the notification manager
                notificationManager.notify(NOTIFICATION_ID, notifyBuilder.build());
                Log.e(TAG, "onPrimaryClipChanged: ");
            }
        };}
这是我的主要活动课:

public class MainActivity extends AppCompatActivity {
private static final int JOB_ID = 234123;
private JobScheduler jobScheduler;

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

    jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);

    ComponentName serviceName = new ComponentName(getPackageName(),
            ClipboardJobService.class.getName());

    JobInfo.Builder jobBuilder = new JobInfo.Builder(JOB_ID, serviceName)
            .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);

    JobInfo myJobInfo = jobBuilder.build();
    jobScheduler.schedule(myJobInfo);
}}

你有。

有没有办法让我创建自己的剪贴板来记录系统范围内的复制事件?@AshutoshSharma:不在Android 10或更高版本上,除非你将其作为一项功能添加到输入法编辑器(又称软键盘)中。谢谢你的帮助!