![](/img/trans.png)
[英]Android Studio: android.intent.category.LAUNCHER Client not ready yet
[英]How to launch an Android app without “android.intent.category.LAUNCHER”
我想知道如何在沒有以下情況下啟動Android app
:
android.intent.category.LAUNCHER
這是我的AndroidManifest.xml
:
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
如果刪除第3行,該應用將不會在啟動器中。 問題是:我在哪里以及如何以其他方式啟動此應用程序?
您需要使用BroadcastReceiver
。
public class SafetyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ActivityManager as = (ActivityManager) context
.getSystemService(Activity.ACTIVITY_SERVICE);
if (IsNavigationRunning(as)) {
Intent i = new Intent(context, VoiceActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
表現:
<application
android:icon="@drawable/fot"
android:label="@string/app_name" >
<activity
android:name="com.Safety.VoiceActivity"
android:launchMode="singleTop"
android:theme="@style/Theme.CompletelyTransparentWindow" >
</activity>
<receiver
android:name="com.Safety.SafetyReceiver"
android:process=":goodprocess" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
這是一個在收到文本時開始的示例。
如果要啟動自定義活動(例如按下按鈕),這會更好:
Button btn = (Button)findViewById(R.id.xBtn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent = new Intent("it.prassel.vimsmediaplayer");
intent.setComponent(ComponentName
.unflattenFromString("it.prassel.vimsmediaplayer/it.prassel.vimsmediaplayer.MainActivity"));
intent.addCategory("android.intent.category.LAUNCHER");
startActivity(intent);
}
});
這是與您的自定義活動相關聯的清單:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="it.prassel.vimsmediaplayer"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-feature android:glEsVersion="0x00020000" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="it.prassel.vimsmediaplayer.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="it.prassel.vimsmediaplayer" />
</intent-filter>
</activity>
</application>
</manifest>
哪里
Intent intent = new Intent("it.prassel.vimsmediaplayer");
對應於該行
<action android:name="it.prassel.vimsmediaplayer" />
和
intent.setComponent(ComponentName
.unflattenFromString("it.prassel.vimsmediaplayer/it.prassel.vimsmediaplayer.MainActivity"))
對應於2行
package="it.prassel.vimsmediaplayer" the part before /
android:name="it.prassel.vimsmediaplayer.MainActivity" the part after /
您的自定義活動既不會出現在菜單中,也不會出現在最近的應用中,它將完全是匿名的。 請注意,如果您希望成為唯一可以訪問您的應用程序的人,請為intent-filter提供有意義的名稱
我想知道如何在沒有的情況下啟動Android應用:android.intent.category.LAUNCHER
在Android中,應該由Intent啟動一個Activity。 Intents可以使用startActivity(Intent myIntent)啟動一個Activity,例如:
Intent myIntent= new Intent(context, target_class.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
您必須將“myIntent”,“context”(通常為“this”)和“target_class”替換為您的變量,以使其起作用。 因此,無論何時需要您的活動,請調用Intent,操作系統將解析該活動
你可以在班上指定。 例如,單擊您想要進入某個活動的按鈕。 所以只需編寫此代碼:
Button btn = (Button)findViewById(R.id.xBtn);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intnt = new Intent();
intnt.setAction(android.intent.action.MAIN);
intnt.setCategory(android.intent.category.LAUNCHER);
startActivity(intnt);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.