2014-05-06 17 views
2

我正在開發一個Android應用程序,用於偵聽包含一些數據包的特定意圖。我想用adb發送一個意圖到我的應用程序。我曾嘗試過:使用控制檯發送捆綁意圖

adb shell am startservice -a com.INTENT_NAME -e myBundleName myBundleData com.pkg/com.pkg.cls 

但我的應用程序將它識別爲字符串列表而不是捆綁。有誰知道如何使用應用程序發送捆綁意圖?不幸的是,文檔只說關於發送字符串或數字列表,而不是捆綁。

回答

6

按照source codeam沒有接受bundle類型的輸入數據的方式

更新: 在Android中7.0意圖參數解析代碼has been movedAm.javaIntent.java並支持更多的數據類型(如基本類型的Array[]ArrayList<>)已被添加。不幸的是,am命令中仍然不支持Bundle類型的附加功能。

+0

謝謝您的迴應。你有任何想法如何使用控制檯發送捆綁意圖? – blazej

-1

您可以使用以下命令來啓動它: 亞行外殼上午startservice -a android.intent.action.MAIN -e「鍵」,「值」 -n com.example.test/.TestService 鍵和值應該是你想要發送的捆綁值。 TestService的應該是您的服務名稱 添加您在AndroidManifest.xml 摘錄服務:

<service android:name=".TestService" android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 

</service> 
0

我面臨同樣的問題,試圖僞裝,你剛剛收到一個Facebook應用程序後安裝的應用情況邀請。不能得到殼工作,最終建立一個非常簡單的測試裝備,只有一個按鈕和處理程序代碼:

Button button = (Button)findViewById(R.id.trigger_button); 
    button.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      Intent intent = new Intent(); 
      intent.setAction("android.intent.action.VIEW"); 
      intent.setData(Uri.parse("myapp://fb-app-invite")); 

      Bundle bundle = new Bundle(); 
      bundle.putString("target_url", "myapp://fb-app-invite?fromuser=673"); 
      intent.putExtra("al_applink_data", bundle); 

      MainActivity.this.startActivity(intent); 
     } 
    });