2016-05-16 184 views
-1

我有一個名爲「App」的應用程序和另一個名爲「App1」的應用程序,當我點擊該按鈕時,我在「App」中有一個按鈕,我想打開「App1」,因爲我使用的是Intent,無法打開「應用1」。請幫助如何從Android的另一個應用程序中打開應用程序?

這是我在「應用」按鈕的代碼: -

protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.app); 
    init(); 
} 
public void init(){ 
    mTranslucentBtn = (Button) findViewById(R.id.button); 
    mTranslucentBtn.setAlpha(0.7f); 
    mTranslucentBtn.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v){//calling an activity using <intent-filter> action name 
      startNewActivity(MainActivity.this,"com.example.devui1.rewardapp"); 

     } 
    }); 
} 
public void startNewActivity(Context context, String packageName) { 
    Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); 
    if (intent == null) { 
     // Bring user to the market or let them choose an app? 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("market://details?id=" + packageName)); 
    } 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(intent); 
} 
+0

請參閱此鏈接:http://developer.android.com/training/basics/intents/sending.html –

回答

0

爲了getLaunchIntentForPackage()工作,那包需要有一個活動,是適合於被作爲該應用的入口點推出。該文檔包括:

當前實現首先查找類CATEGORY_INFO中的主活動,接下來查找類CATEGORY_LAUNCHER中的主活動。如果兩者均未找到,則返回null。

這意味着你需要在你的其他包的活動執行下列操作之一:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.INFO" /> 
</intent-filter> 

或者

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

如果這不是你想要的東西,那麼你可以嘗試創建自己的自定義操作字符串並使用該字符串來發起展示該特定操作的活動:

<intent-filter> 
    <action android:name="your.package.ACTION_NAME" /> 
</intent-filter> 

public void startActivityWithPrivateAction(Context context, String packageName) { 
    Intent intent = new Intent("your.package.ACTION_NAME"); 
    intent.setPackage(packageName); 
    List<ResolveInfo> activities = context.getPackageManager().queryIntentActivities(intent, 0); 
    if (activities.isEmpty() { 
     // no suitable activity was found; open the market instead. 
     intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("market://details?id=" + packageName)); 
    } 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(intent); 
} 
+0

我已經做到了 –

相關問題