我想從另一個應用程序調用一個應用程序。如何從Android的另一個應用程序調用或調用一個應用程序?
我的Java文件代碼:
Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("Package name", "class name"));
startActivity(intent);
但我在指定確切的包路徑得到的問題,我不知道在清單代碼許可。請幫助我。
我想從另一個應用程序調用一個應用程序。如何從Android的另一個應用程序調用或調用一個應用程序?
我的Java文件代碼:
Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("Package name", "class name"));
startActivity(intent);
但我在指定確切的包路徑得到的問題,我不知道在清單代碼許可。請幫助我。
我打算假設你確實意味着你想在你的應用中啓動另一個應用,而不是另一個Activity。
然後有兩種方法可以做到這一點。您可以嘗試使用隱式意圖,根據文檔,(隱式)意圖是「要執行的操作的抽象描述」,該意思是「提供在不同應用程序中的代碼之間執行延遲的運行時綁定」。有點像嘗試通過使用接口的線路啓動方法。您無法確定所啓動的對象的類只是它可以處理您聲明的操作和類別。
第二種方法是明確的意圖,這更像是通過電線進行具體的呼叫。如果你知道這個應該可以工作的包和類名稱。
Intent intent = new Intent(Intent.ACTION_MAIN);
//intent.putExtra("plain_text", "Testing");
intent.setClassName("packagename", "packagename.ClassName"); // Explicit Intent
try {
startActivity(intent);
}
catch (Exception e)
{
Log.d(TAG","onCreate",e);
}
}
您可以使用標誌添加額外的信息,這取決於您的需求以及您嘗試從哪裏啓動。
JAL
您可能需要更具體一點關於您正在做的事情。如果你想要做的是,比如說,啓動從您的主要活動的另外一個活動,像這樣的工作:
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("key", "data"); //put any data you want to pass into the new activity
startActivity(intent);
然後只是確保你把新的活動在您的清單如下:
<activity android:name=".OtherActivity"
android:label="@string/other"/>
如果你的目標是別的東西,那麼你應該對你想要做的事情有具體的瞭解。
從您的應用程序啓動外部活動是使用與您正在使用的稍有不同的方法完成的。你需要create an intent with a given action。例如,推出的意圖來從畫廊的形象是這樣的:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, IMAGE_PICK);
請注意,您沒有明確定義活動被加載,而要執行的動作的類型。然後,Android將選擇(或讓用戶選擇)一個已註冊的活動來處理這種運行意圖。