Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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
Java 颤振:如何将本机SDK(Spotify Android SDK)添加到应用程序?_Java_Android_Flutter_Spotify - Fatal编程技术网

Java 颤振:如何将本机SDK(Spotify Android SDK)添加到应用程序?

Java 颤振:如何将本机SDK(Spotify Android SDK)添加到应用程序?,java,android,flutter,spotify,Java,Android,Flutter,Spotify,我想写一个访问Spotify Android SDK的包。我正在尝试添加身份验证。那不行。我没有打开登录屏幕。我是否需要在dart代码中添加视图(如下所述:) 省道: ... void initPlatformState() async { try { String test = await Nativecode05.spotifyTest; print(test); } on PlatformException { platformVersi

我想写一个访问Spotify Android SDK的包。我正在尝试添加身份验证。那不行。我没有打开登录屏幕。我是否需要在dart代码中添加视图(如下所述:)

省道:

...
void initPlatformState() async {
    try {
      String test = await Nativecode05.spotifyTest;
      print(test);
    } on PlatformException {
      platformVersion = 'Failed';
    }
  }
...
import 'dart:async';

import 'package:flutter/services.dart';

class Nativecode05 {
  static const MethodChannel _channel = const MethodChannel('nativecode05');

  static Future<String> get spotifyTest async {
    final String version = await _channel.invokeMethod('spotifyTest');
    return version;
  }
}
package example.com.nativecode05;

import io.flutter.Log;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;

import com.spotify.android.appremote.api.ConnectionParams;
import com.spotify.android.appremote.api.Connector;
import com.spotify.android.appremote.api.SpotifyAppRemote;

import static android.content.ContentValues.TAG;

/** Nativecode05Plugin */
public class Nativecode05Plugin implements MethodCallHandler {
  private static final String CLIENT_ID = "7b23dface41e4a9595276a7c12262143";
  private static final String REDIRECT_URI = "http://cape/callback";
  private SpotifyAppRemote mSpotifyAppRemote;
  private Registrar mRegistrar;

  /** Plugin registration. */
  public static void registerWith(Registrar registrar) {
    final MethodChannel channel = new MethodChannel(registrar.messenger(), "nativecode05");
    channel.setMethodCallHandler(new Nativecode05Plugin(registrar));
  }

  Nativecode05Plugin(Registrar registrar) {
        mRegistrar = registrar;
    }

  @Override
  public void onMethodCall(MethodCall call, Result result) {
    if (call.method.equals("spotifyTest")) {
      result.success("test");
      performAuthorization();
      return;
    }

    result.notImplemented();
  }

  private void performAuthorization() {
    Log.d(TAG, "Performing authorization...");

    // Set the connection parameters
    ConnectionParams connectionParams =
            new ConnectionParams.Builder(CLIENT_ID)
                    .setRedirectUri(REDIRECT_URI)
                    .showAuthView(true)
                    .build();

    SpotifyAppRemote.connect(mRegistrar.activeContext(), connectionParams,
            new Connector.ConnectionListener() {

              @Override
              public void onConnected(SpotifyAppRemote spotifyAppRemote) {
                mSpotifyAppRemote = spotifyAppRemote;
                Log.d(TAG, "Connected! Yay!");

                // Now you can start interacting with App Remote
                //connected();
              }

              @Override
              public void onFailure(Throwable throwable) {
                Log.e(TAG, throwable.getMessage(), throwable);

                // Something went wrong when attempting to connect! Handle errors here
              }
            });
  }

}
Launching lib\main.dart on SM G960F in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
Built build\app\outputs\apk\debug\app-debug.apk.
Installing build\app\outputs\apk\app.apk...
D/EmergencyMode(17067): [EmergencyManager] android createPackageContext successful
D/InputTransport(17067): Input channel constructed: fd=87
D/ViewRootImpl@a7a19f9[MainActivity](17067): setView = DecorView@97d1d3e[MainActivity] TM=true MM=false
W/ecode05_exampl(17067): Accessing hidden method Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden method Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden field Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray; (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden method Landroid/util/LongArray;->get(I)J (light greylist, reflection)
D/SurfaceView(17067): onWindowVisibilityChanged(0) true 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
D/ViewRootImpl@a7a19f9[MainActivity](17067): dispatchAttachedToWindow
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x7 surface={valid=true 508548042752} changed=true
I/OpenGLRenderer(17067): Initialized EGL, version 1.4
D/OpenGLRenderer(17067): Swap behavior 2
D/mali_winsys(17067): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(17067): eglCreateWindowSurface = 0x765347ca00, 0x7667d35010
D/SurfaceView(17067): show() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
Syncing files to device SM G960F...
D/SurfaceView(17067): surfaceCreated 1 #8 io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
D/mali_winsys(17067): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/SurfaceView(17067): surfaceChanged (1440,2900) 1 #8 io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
I/Choreographer(17067): Skipped 39 frames!  The application may be doing too much work on its main thread.
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x3 surface={valid=true 508548042752} changed=false
I/OpenGLRenderer(17067): Davey! duration=814ms; Flags=1, IntendedVsync=626714985015335, Vsync=626715635015309, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=626715637655313, AnimationStart=626715637750275, PerformTraversalsStart=626715637758236, DrawStart=626715651163506, SyncQueued=626715655711967, SyncStart=626715655915390, IssueDrawCommandsStart=626715656392275, SwapBuffers=626715796396544, FrameCompleted=626715799700313, DequeueBufferDuration=11272000, QueueBufferDuration=584000, 
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_WINDOW_FOCUS_CHANGED 1 1
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
I/InputMethodManager(17067): startInputInner - mService.startInputOrWindowGainedFocus
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_RESIZED_REPORT: frame=Rect(0, 0 - 1440, 2960) ci=Rect(0, 96 - 0, 60) vi=Rect(0, 96 - 0, 60) or=1
D/InputTransport(17067): Input channel constructed: fd=96
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
D/ContentValues(17067): Performing authorization...
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 2 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 9 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 1 line
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 5 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 5 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
E/ContentValues(17067): {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067): com.spotify.android.appremote.api.error.AuthenticationFailedException: {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector.asAppRemoteException(LocalConnector.java:131)
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector.access$000(LocalConnector.java:35)
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector$1.onConnectionFailed(LocalConnector.java:111)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:142)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:75)
E/ContentValues(17067):     at android.os.AsyncTask.finish(AsyncTask.java:695)
E/ContentValues(17067):     at android.os.AsyncTask.access$600(AsyncTask.java:180)
E/ContentValues(17067):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
E/ContentValues(17067):     at android.os.Handler.dispatchMessage(Handler.java:106)
E/ContentValues(17067):     at android.os.Looper.loop(Looper.java:214)
E/ContentValues(17067):     at android.app.ActivityThread.main(ActivityThread.java:6986)
E/ContentValues(17067):     at java.lang.reflect.Method.invoke(Native Method)
E/ContentValues(17067):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/ContentValues(17067):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
E/ContentValues(17067): Caused by: com.spotify.protocol.client.error.RemoteClientException: {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient.getRemoteClientException(RemoteWampClient.java:139)
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient.access$200(RemoteWampClient.java:16)
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient$1.onAbort(RemoteWampClient.java:44)
E/ContentValues(17067):     at com.spotify.protocol.client.WampRouterImpl.routeAbort(WampRouterImpl.java:100)
E/ContentValues(17067):     at com.spotify.protocol.client.WampRouterImpl.route(WampRouterImpl.java:26)
E/ContentValues(17067):     at com.spotify.protocol.client.AppProtocolCommunicator.onData(AppProtocolCommunicator.java:78)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo.handleMessage(RemoteServiceIo.java:113)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo.access$000(RemoteServiceIo.java:47)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo$IncomingHandler.handleMessage(RemoteServiceIo.java:91)
E/ContentValues(17067):     ... 6 more
I/flutter (17067): test
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
I/InputMethodManager(17067): startInputInner - mService.startInputOrWindowGainedFocus
D/InputTransport(17067): Input channel constructed: fd=97
D/InputTransport(17067): Input channel destroyed: fd=96
D/SurfaceView(17067): windowStopped(true) false 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
D/SurfaceView(17067): show() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
D/SurfaceView(17067): surfaceDestroyed callback.size 1 #1 io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
W/libEGL  (17067): EGLNativeWindowType 0x7667d36010 disconnect failed
D/SurfaceView(17067): destroy() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_WINDOW_FOCUS_CHANGED 0 1
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
D/SurfaceView(17067): onWindowVisibilityChanged(8) false 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
W/libEGL  (17067): EGLNativeWindowType 0x7667d35010 disconnect failed
D/OpenGLRenderer(17067): eglDestroySurface = 0x765347ca00, 0x7667d35000
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x5 surface={valid=false 0} changed=true
套餐:

...
void initPlatformState() async {
    try {
      String test = await Nativecode05.spotifyTest;
      print(test);
    } on PlatformException {
      platformVersion = 'Failed';
    }
  }
...
import 'dart:async';

import 'package:flutter/services.dart';

class Nativecode05 {
  static const MethodChannel _channel = const MethodChannel('nativecode05');

  static Future<String> get spotifyTest async {
    final String version = await _channel.invokeMethod('spotifyTest');
    return version;
  }
}
package example.com.nativecode05;

import io.flutter.Log;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;

import com.spotify.android.appremote.api.ConnectionParams;
import com.spotify.android.appremote.api.Connector;
import com.spotify.android.appremote.api.SpotifyAppRemote;

import static android.content.ContentValues.TAG;

/** Nativecode05Plugin */
public class Nativecode05Plugin implements MethodCallHandler {
  private static final String CLIENT_ID = "7b23dface41e4a9595276a7c12262143";
  private static final String REDIRECT_URI = "http://cape/callback";
  private SpotifyAppRemote mSpotifyAppRemote;
  private Registrar mRegistrar;

  /** Plugin registration. */
  public static void registerWith(Registrar registrar) {
    final MethodChannel channel = new MethodChannel(registrar.messenger(), "nativecode05");
    channel.setMethodCallHandler(new Nativecode05Plugin(registrar));
  }

  Nativecode05Plugin(Registrar registrar) {
        mRegistrar = registrar;
    }

  @Override
  public void onMethodCall(MethodCall call, Result result) {
    if (call.method.equals("spotifyTest")) {
      result.success("test");
      performAuthorization();
      return;
    }

    result.notImplemented();
  }

  private void performAuthorization() {
    Log.d(TAG, "Performing authorization...");

    // Set the connection parameters
    ConnectionParams connectionParams =
            new ConnectionParams.Builder(CLIENT_ID)
                    .setRedirectUri(REDIRECT_URI)
                    .showAuthView(true)
                    .build();

    SpotifyAppRemote.connect(mRegistrar.activeContext(), connectionParams,
            new Connector.ConnectionListener() {

              @Override
              public void onConnected(SpotifyAppRemote spotifyAppRemote) {
                mSpotifyAppRemote = spotifyAppRemote;
                Log.d(TAG, "Connected! Yay!");

                // Now you can start interacting with App Remote
                //connected();
              }

              @Override
              public void onFailure(Throwable throwable) {
                Log.e(TAG, throwable.getMessage(), throwable);

                // Something went wrong when attempting to connect! Handle errors here
              }
            });
  }

}
Launching lib\main.dart on SM G960F in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
Built build\app\outputs\apk\debug\app-debug.apk.
Installing build\app\outputs\apk\app.apk...
D/EmergencyMode(17067): [EmergencyManager] android createPackageContext successful
D/InputTransport(17067): Input channel constructed: fd=87
D/ViewRootImpl@a7a19f9[MainActivity](17067): setView = DecorView@97d1d3e[MainActivity] TM=true MM=false
W/ecode05_exampl(17067): Accessing hidden method Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden method Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden field Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray; (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden method Landroid/util/LongArray;->get(I)J (light greylist, reflection)
D/SurfaceView(17067): onWindowVisibilityChanged(0) true 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
D/ViewRootImpl@a7a19f9[MainActivity](17067): dispatchAttachedToWindow
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x7 surface={valid=true 508548042752} changed=true
I/OpenGLRenderer(17067): Initialized EGL, version 1.4
D/OpenGLRenderer(17067): Swap behavior 2
D/mali_winsys(17067): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(17067): eglCreateWindowSurface = 0x765347ca00, 0x7667d35010
D/SurfaceView(17067): show() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
Syncing files to device SM G960F...
D/SurfaceView(17067): surfaceCreated 1 #8 io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
D/mali_winsys(17067): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/SurfaceView(17067): surfaceChanged (1440,2900) 1 #8 io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
I/Choreographer(17067): Skipped 39 frames!  The application may be doing too much work on its main thread.
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x3 surface={valid=true 508548042752} changed=false
I/OpenGLRenderer(17067): Davey! duration=814ms; Flags=1, IntendedVsync=626714985015335, Vsync=626715635015309, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=626715637655313, AnimationStart=626715637750275, PerformTraversalsStart=626715637758236, DrawStart=626715651163506, SyncQueued=626715655711967, SyncStart=626715655915390, IssueDrawCommandsStart=626715656392275, SwapBuffers=626715796396544, FrameCompleted=626715799700313, DequeueBufferDuration=11272000, QueueBufferDuration=584000, 
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_WINDOW_FOCUS_CHANGED 1 1
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
I/InputMethodManager(17067): startInputInner - mService.startInputOrWindowGainedFocus
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_RESIZED_REPORT: frame=Rect(0, 0 - 1440, 2960) ci=Rect(0, 96 - 0, 60) vi=Rect(0, 96 - 0, 60) or=1
D/InputTransport(17067): Input channel constructed: fd=96
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
D/ContentValues(17067): Performing authorization...
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 2 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 9 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 1 line
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 5 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 5 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
E/ContentValues(17067): {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067): com.spotify.android.appremote.api.error.AuthenticationFailedException: {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector.asAppRemoteException(LocalConnector.java:131)
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector.access$000(LocalConnector.java:35)
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector$1.onConnectionFailed(LocalConnector.java:111)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:142)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:75)
E/ContentValues(17067):     at android.os.AsyncTask.finish(AsyncTask.java:695)
E/ContentValues(17067):     at android.os.AsyncTask.access$600(AsyncTask.java:180)
E/ContentValues(17067):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
E/ContentValues(17067):     at android.os.Handler.dispatchMessage(Handler.java:106)
E/ContentValues(17067):     at android.os.Looper.loop(Looper.java:214)
E/ContentValues(17067):     at android.app.ActivityThread.main(ActivityThread.java:6986)
E/ContentValues(17067):     at java.lang.reflect.Method.invoke(Native Method)
E/ContentValues(17067):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/ContentValues(17067):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
E/ContentValues(17067): Caused by: com.spotify.protocol.client.error.RemoteClientException: {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient.getRemoteClientException(RemoteWampClient.java:139)
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient.access$200(RemoteWampClient.java:16)
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient$1.onAbort(RemoteWampClient.java:44)
E/ContentValues(17067):     at com.spotify.protocol.client.WampRouterImpl.routeAbort(WampRouterImpl.java:100)
E/ContentValues(17067):     at com.spotify.protocol.client.WampRouterImpl.route(WampRouterImpl.java:26)
E/ContentValues(17067):     at com.spotify.protocol.client.AppProtocolCommunicator.onData(AppProtocolCommunicator.java:78)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo.handleMessage(RemoteServiceIo.java:113)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo.access$000(RemoteServiceIo.java:47)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo$IncomingHandler.handleMessage(RemoteServiceIo.java:91)
E/ContentValues(17067):     ... 6 more
I/flutter (17067): test
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
I/InputMethodManager(17067): startInputInner - mService.startInputOrWindowGainedFocus
D/InputTransport(17067): Input channel constructed: fd=97
D/InputTransport(17067): Input channel destroyed: fd=96
D/SurfaceView(17067): windowStopped(true) false 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
D/SurfaceView(17067): show() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
D/SurfaceView(17067): surfaceDestroyed callback.size 1 #1 io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
W/libEGL  (17067): EGLNativeWindowType 0x7667d36010 disconnect failed
D/SurfaceView(17067): destroy() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_WINDOW_FOCUS_CHANGED 0 1
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
D/SurfaceView(17067): onWindowVisibilityChanged(8) false 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
W/libEGL  (17067): EGLNativeWindowType 0x7667d35010 disconnect failed
D/OpenGLRenderer(17067): eglDestroySurface = 0x765347ca00, 0x7667d35000
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x5 surface={valid=false 0} changed=true
结果为终端:

...
void initPlatformState() async {
    try {
      String test = await Nativecode05.spotifyTest;
      print(test);
    } on PlatformException {
      platformVersion = 'Failed';
    }
  }
...
import 'dart:async';

import 'package:flutter/services.dart';

class Nativecode05 {
  static const MethodChannel _channel = const MethodChannel('nativecode05');

  static Future<String> get spotifyTest async {
    final String version = await _channel.invokeMethod('spotifyTest');
    return version;
  }
}
package example.com.nativecode05;

import io.flutter.Log;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;

import com.spotify.android.appremote.api.ConnectionParams;
import com.spotify.android.appremote.api.Connector;
import com.spotify.android.appremote.api.SpotifyAppRemote;

import static android.content.ContentValues.TAG;

/** Nativecode05Plugin */
public class Nativecode05Plugin implements MethodCallHandler {
  private static final String CLIENT_ID = "7b23dface41e4a9595276a7c12262143";
  private static final String REDIRECT_URI = "http://cape/callback";
  private SpotifyAppRemote mSpotifyAppRemote;
  private Registrar mRegistrar;

  /** Plugin registration. */
  public static void registerWith(Registrar registrar) {
    final MethodChannel channel = new MethodChannel(registrar.messenger(), "nativecode05");
    channel.setMethodCallHandler(new Nativecode05Plugin(registrar));
  }

  Nativecode05Plugin(Registrar registrar) {
        mRegistrar = registrar;
    }

  @Override
  public void onMethodCall(MethodCall call, Result result) {
    if (call.method.equals("spotifyTest")) {
      result.success("test");
      performAuthorization();
      return;
    }

    result.notImplemented();
  }

  private void performAuthorization() {
    Log.d(TAG, "Performing authorization...");

    // Set the connection parameters
    ConnectionParams connectionParams =
            new ConnectionParams.Builder(CLIENT_ID)
                    .setRedirectUri(REDIRECT_URI)
                    .showAuthView(true)
                    .build();

    SpotifyAppRemote.connect(mRegistrar.activeContext(), connectionParams,
            new Connector.ConnectionListener() {

              @Override
              public void onConnected(SpotifyAppRemote spotifyAppRemote) {
                mSpotifyAppRemote = spotifyAppRemote;
                Log.d(TAG, "Connected! Yay!");

                // Now you can start interacting with App Remote
                //connected();
              }

              @Override
              public void onFailure(Throwable throwable) {
                Log.e(TAG, throwable.getMessage(), throwable);

                // Something went wrong when attempting to connect! Handle errors here
              }
            });
  }

}
Launching lib\main.dart on SM G960F in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
Built build\app\outputs\apk\debug\app-debug.apk.
Installing build\app\outputs\apk\app.apk...
D/EmergencyMode(17067): [EmergencyManager] android createPackageContext successful
D/InputTransport(17067): Input channel constructed: fd=87
D/ViewRootImpl@a7a19f9[MainActivity](17067): setView = DecorView@97d1d3e[MainActivity] TM=true MM=false
W/ecode05_exampl(17067): Accessing hidden method Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden method Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden field Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray; (light greylist, reflection)
W/ecode05_exampl(17067): Accessing hidden method Landroid/util/LongArray;->get(I)J (light greylist, reflection)
D/SurfaceView(17067): onWindowVisibilityChanged(0) true 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
D/ViewRootImpl@a7a19f9[MainActivity](17067): dispatchAttachedToWindow
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x7 surface={valid=true 508548042752} changed=true
I/OpenGLRenderer(17067): Initialized EGL, version 1.4
D/OpenGLRenderer(17067): Swap behavior 2
D/mali_winsys(17067): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/OpenGLRenderer(17067): eglCreateWindowSurface = 0x765347ca00, 0x7667d35010
D/SurfaceView(17067): show() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
Syncing files to device SM G960F...
D/SurfaceView(17067): surfaceCreated 1 #8 io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
D/mali_winsys(17067): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
D/SurfaceView(17067): surfaceChanged (1440,2900) 1 #8 io.flutter.view.FlutterView{5395cb5 VFED..... ......ID 0,0-1440,2900}
I/Choreographer(17067): Skipped 39 frames!  The application may be doing too much work on its main thread.
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x3 surface={valid=true 508548042752} changed=false
I/OpenGLRenderer(17067): Davey! duration=814ms; Flags=1, IntendedVsync=626714985015335, Vsync=626715635015309, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=626715637655313, AnimationStart=626715637750275, PerformTraversalsStart=626715637758236, DrawStart=626715651163506, SyncQueued=626715655711967, SyncStart=626715655915390, IssueDrawCommandsStart=626715656392275, SwapBuffers=626715796396544, FrameCompleted=626715799700313, DequeueBufferDuration=11272000, QueueBufferDuration=584000, 
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_WINDOW_FOCUS_CHANGED 1 1
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
I/InputMethodManager(17067): startInputInner - mService.startInputOrWindowGainedFocus
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_RESIZED_REPORT: frame=Rect(0, 0 - 1440, 2960) ci=Rect(0, 96 - 0, 60) vi=Rect(0, 96 - 0, 60) or=1
D/InputTransport(17067): Input channel constructed: fd=96
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
D/ContentValues(17067): Performing authorization...
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 2 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 9 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 1 line
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 5 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Info; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/HelloDetails; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 153
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
I/chatty  (17067): uid=10433(example.com.nativecode05_example) AsyncTask #2 identical 5 lines
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
W/ecode05_exampl(17067): Unable to resolve Lcom/spotify/protocol/types/Roles; annotation class 156
E/ContentValues(17067): {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067): com.spotify.android.appremote.api.error.AuthenticationFailedException: {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector.asAppRemoteException(LocalConnector.java:131)
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector.access$000(LocalConnector.java:35)
E/ContentValues(17067):     at com.spotify.android.appremote.api.LocalConnector$1.onConnectionFailed(LocalConnector.java:111)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:142)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.SdkRemoteClientConnector$ConnectionTask.onPostExecute(SdkRemoteClientConnector.java:75)
E/ContentValues(17067):     at android.os.AsyncTask.finish(AsyncTask.java:695)
E/ContentValues(17067):     at android.os.AsyncTask.access$600(AsyncTask.java:180)
E/ContentValues(17067):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
E/ContentValues(17067):     at android.os.Handler.dispatchMessage(Handler.java:106)
E/ContentValues(17067):     at android.os.Looper.loop(Looper.java:214)
E/ContentValues(17067):     at android.app.ActivityThread.main(ActivityThread.java:6986)
E/ContentValues(17067):     at java.lang.reflect.Method.invoke(Native Method)
E/ContentValues(17067):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/ContentValues(17067):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
E/ContentValues(17067): Caused by: com.spotify.protocol.client.error.RemoteClientException: {"message":"Could not authenticate within 60 s."}
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient.getRemoteClientException(RemoteWampClient.java:139)
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient.access$200(RemoteWampClient.java:16)
E/ContentValues(17067):     at com.spotify.protocol.client.RemoteWampClient$1.onAbort(RemoteWampClient.java:44)
E/ContentValues(17067):     at com.spotify.protocol.client.WampRouterImpl.routeAbort(WampRouterImpl.java:100)
E/ContentValues(17067):     at com.spotify.protocol.client.WampRouterImpl.route(WampRouterImpl.java:26)
E/ContentValues(17067):     at com.spotify.protocol.client.AppProtocolCommunicator.onData(AppProtocolCommunicator.java:78)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo.handleMessage(RemoteServiceIo.java:113)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo.access$000(RemoteServiceIo.java:47)
E/ContentValues(17067):     at com.spotify.android.appremote.internal.RemoteServiceIo$IncomingHandler.handleMessage(RemoteServiceIo.java:91)
E/ContentValues(17067):     ... 6 more
I/flutter (17067): test
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
V/InputMethodManager(17067): Starting input: tba=example.com.nativecode05_example ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(17067): startInputInner - Id : 0
I/InputMethodManager(17067): startInputInner - mService.startInputOrWindowGainedFocus
D/InputTransport(17067): Input channel constructed: fd=97
D/InputTransport(17067): Input channel destroyed: fd=96
D/SurfaceView(17067): windowStopped(true) false 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
D/SurfaceView(17067): show() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
D/SurfaceView(17067): surfaceDestroyed callback.size 1 #1 io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
W/libEGL  (17067): EGLNativeWindowType 0x7667d36010 disconnect failed
D/SurfaceView(17067): destroy() Surface(name=SurfaceView - example.com.nativecode05_example/example.com.nativecode05_example.MainActivity@5395cb5@0[17067])/@0xca9cf4a io.flutter.view.FlutterView{5395cb5 VFED..... ........ 0,0-1440,2900}
D/ViewRootImpl@a7a19f9[MainActivity](17067): MSG_WINDOW_FOCUS_CHANGED 0 1
D/InputMethodManager(17067): prepareNavigationBarInfo() DecorView@97d1d3e[MainActivity]
D/InputMethodManager(17067): getNavigationBarColor() -855310
D/SurfaceView(17067): onWindowVisibilityChanged(8) false 5395cb5 of ViewRootImpl@a7a19f9[MainActivity]
W/libEGL  (17067): EGLNativeWindowType 0x7667d35010 disconnect failed
D/OpenGLRenderer(17067): eglDestroySurface = 0x765347ca00, 0x7667d35000
D/ViewRootImpl@a7a19f9[MainActivity](17067): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x5 surface={valid=false 0} changed=true

您可以将此代码用于Spotify API。它还可以用于其他API调用。这里使用的是flatter_web_auth 0.1.2包。这更容易

void authenticate() async {
  // Present the dialog to the user
  final result = await FlutterWebAuth.authenticate(
    url:
        "https://accounts.spotify.com/authorize?client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&redirect_uri=yourname:/&scope=user-read-currently-playing&response_type=token&state=123",
    callbackUrlScheme: "yourname",
  );

// Extract token from resulting url
  final token = Uri.parse(result);
  String at = token.fragment;
  at = "http://website/index.html?$at"; // Just for easy persing
  var accesstoken = Uri.parse(at).queryParameters['access_token'];
  print('token');
  print(accesstoken);
}
添加到AndroidManifest.xml android\app\src\main

                 ...
        </activity>
        <activity android:name="com.linusu.flutter_web_auth.CallbackActivity" >
            <intent-filter android:label="flutter_web_auth">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="yourname" />
            </intent-filter>
            </activity>
    </application>
</manifest>
。。。
您好,软件包正是您想要的。免责声明我是软件包的开发者:)