簡體   English   中英

Android Wear-Gradle依賴性問題“無法解析符號”

[英]Android Wear - Gradle dependency issues “Cannot resolve symbol”

我按照此處的說明在Android Studio中使用移動和穿戴組件構建了一個簡單的應用。 我的移動活動中包含以下代碼,嘗試調用Wear模塊中的MyWearActivity:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    Intent intent = new Intent(this, MyWearActivity.class);
    startActivity(intent);
}

我的移動build.gradle文件具有以下依賴關系:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
wearApp project(':wear')
compile 'com.android.support:appcompat-v7:20.+'
compile 'com.google.android.gms:play-services-wearable:+'
compile 'com.google.android.support:wearable:+'
}

但是,我收到以下錯誤“無法解析符號MyWearActivity”,試圖從Android Studio運行“移動”運行配置。我認為wearApp project(':wear')位將解決對磨損的移動依賴性但似乎沒有,任何人都可以找出我要去的地方嗎?

不,可以將Wear模塊和Mobile模塊視為兩個完全不同的apk或應用(因為它們是)。 您不會直接從移動應用中調用Wear模塊中的活動。 Wear應用程序是通過用戶交互啟動的。 您到底想做什么?

好的,根據您的以下評論,問題仍然在於您無法從移動應用程序調用WearActivity,因為該應用程序位於未鏈接在一起的其他庫/應用程序中。 Nickjm的答案中上面的示例代碼是一個好的開始。

您應該改為使用MessageAPI將消息發送到您的Wear設備。 您可以在此處了解如何進行操作: https : //developer.android.com/training/wearables/data-layer/index.html ,這是一個示例(假設您已經創建並連接了GoogleApiClient

private void fireMessage(final String message) {
    // Send the RPC
    PendingResult<NodeApi.GetConnectedNodesResult> nodes = Wearable.NodeApi.getConnectedNodes(apiClient);
    nodes.setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
        @Override
        public void onResult(NodeApi.GetConnectedNodesResult result) {
            for (int i = 0; i < result.getNodes().size(); i++) {
                Node node = result.getNodes().get(i);
                String nName = node.getDisplayName();
                String nId = node.getId();
                Log.d(TAG, "Node name and ID: " + nName + " | " + nId);

                PendingResult<MessageApi.SendMessageResult> messageResult = Wearable.MessageApi.sendMessage(apiClient, node.getId(),
                        message, null);
                messageResult.setResultCallback(new ResultCallback<MessageApi.SendMessageResult>() {
                    @Override
                    public void onResult(MessageApi.SendMessageResult sendMessageResult) {
                        Status status = sendMessageResult.getStatus();
                        Log.d(TAG, "Status: " + status.toString() + " Msg: " + message);
                        if (status.getStatusCode() != WearableStatusCodes.SUCCESS) {
                            //alertButton.setProgress(-1);
                            Toast.makeText(getApplicationContext(), "Tap to retry. Alert not sent :(", Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }
        }
    });
}

然后,在您的wear模塊中,您應該實現一個偵聽器,或者更好的方法是,使用onMessageReceived方法實現WearableListenerService來響應該消息。 例如,您可以讓該服務根據該消息激發一個意圖以啟動“活動”,或者構建一個通知以顯示在設備上。 這是構建通知的指南https://developer.android.com/training/wearables/notifications/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM